Пока я знаю, как расширить список с его концов, но в итоге они удваиваются из-за первого условия, которое заключается в удвоении синглтона.Будет ли смысл для кода выглядеть так:
sumExpand :: [Integer] -> [Integer]
sumExpand l = expand l []
where
expand [] a = a
expand (x:[]) a = x: expand [] (x:a)
expand (x:xs) a = expand (x:a) (expand xs a)
А для меня нужно поработать над его выводом:
[1,1,2,2,3,3] from [1,2,3]
instead of [1,3,5,3]
Последнее - мое желание?Вот как я получил временное решение для списка из двух элементов:
expand (x:xs) a = x: tail (expand (map (x+) xs) (last xs:a))
Вывод:
*Main> sumExpand [1,2]
[1,3,2]
*Main> sumExpand [1,2,3]
[1,7,4,3]
РЕДАКТИРОВАТЬ: в основном, я хочу, чтобы алгоритмработать так: [a, b, c] => [a, a+b, b+c, c]