foldl (flip (:) ) [] [2,4,6]
I am interpreting this in the following steps:
The first step I believe is flip (:) [] [2,4,6]
Where the two lists become [2,4,6] []
The next step I believe is foldl [2,4,6] []
Where the two lists become combined into [2,4,6] and what I have concluded as my final answer
but the answer is [6,4,2] and I need assistance understanding how the process reaches [6,4,2]
CodePudding user response:
foldl f a [] = a
foldl f a (x:xs) = foldl f (f a x) xs
-- Therefore
foldl (flip (:)) [] [2,4,6]
= foldl (flip (:)) (flip (:) [] 2) [4,6]
= foldl (flip (:)) ((:) 2 []) [4,6]
= foldl (flip (:)) [2] [4,6]
= foldl (flip (:)) (flip (:) [2] 4) [6]
= foldl (flip (:)) ((:) 4 [2]) [6]
= foldl (flip (:)) [4,2] [6]
= foldl (flip (:)) (flip (:) [4,2] 6) []
= foldl (flip (:)) ((:) 6 [4,2]) []
= foldl (flip (:)) [6,4,2] []
= [6,4,2]