foldl
делает!foldl
- это левый фолд, поэтому он работает с вашим списком, начиная с его начального состояния (которое вы предоставляете как []
) и самого левого элемента списка, и вызывает вашу функцию, которая добавляет отрицание этого элемента кгосударство.Затем он берет следующий левый элемент и делает то же самое.Но каждый раз вы добавляете символы, что означает, что первый элемент вашего ввода в конечном итоге соответствует последнему элементу вывода, потому что он был первым, к которому был добавлен префикс.
Возможно, вы захотите foldr
дляэто складка, которая начинается с самого правого элемента.В качестве альтернативы, использование map
было бы более простым подходом для этой конкретной проблемы.
Пример кода:
makeAllNegative = map (negate . abs)