\ ๐ฅ3 โถ / \ ๐ฅ4 โฅ / \ โฅ ๐ฅ4 / \ โฅ ๐ฅ3 / \ โฅ ๐ฅ2 / \ [ ] ๐ฅ1 โถ / \ ๐ฅ4 โถ / \ ๐ฅ3 โถ / \ ๐ฅ2 โถ / \ ๐ฅ1 ๐ฅ4 โถ (๐ฅ3 โถ ๐ฅ2 โถ ๐ฅ1 โถ ) โถ / \ ๐ฅ1 โถ / \ ๐ฅ2 โถ / \ ๐ฅ3 โถ / \ ๐ฅ4 ๐ฅ1 : (๐ฅ2 : ๐ฅ3 : ๐ฅ4 : ) (( โฅ๐ฅ1 โฅ๐ฅ2 )โฅ๐ฅ3 )โฅ๐ฅ4 var acc = [ ] foreach(x in xs) acc = acc โฅx) return acc ๐๐๐๐๐ โถ ๐ฅ๐ ๐๐๐๐๐ โฅ ๐ฅ๐ ๐ฅ๐ = [๐ฅ1 , ๐ฅ2 , ๐ฅ3 , ๐ฅ4 ] ๐๐๐๐๐ โถ = ๐๐๐๐๐ก๐๐ก๐ฆ = ๐๐๐๐๐ ฮป๐ฅ. ฮป๐ฆ. ๐ฅ โถ ๐ฆ ๐๐๐๐๐ โฅ = ๐๐๐ฃ๐๐๐ ๐ = ๐๐๐๐๐ ฮป๐ฅ. ฮป๐ฆ. ๐ฆ โถ ๐ฅ ๐๐๐๐๐ โท ๐ผ โ ๐ฝ โ ๐ฝ โ ๐ฝ โ ๐ผ โ ๐ฝ ๐๐๐๐๐ ๐ ๐ = ๐ ๐๐๐๐๐ ๐ ๐ ๐ฅ: ๐ฅ๐ = ๐ ๐ฅ ๐๐๐๐๐ ๐ ๐ ๐ฅ๐ ๐๐๐๐๐ โท ๐ฝ โ ๐ผ โ ๐ฝ โ ๐ฝ โ ๐ผ โ ๐ฝ ๐๐๐๐๐ ๐ ๐ = ๐ ๐๐๐๐๐ ๐ ๐ ๐ฅ: ๐ฅ๐ = ๐๐๐๐๐ ๐ ๐ ๐ ๐ฅ ๐ฅ๐ โถ = ฮป๐ฅ. ฮป๐ฆ. ๐ฅ โถ ๐ฆ โฅ = ฮป๐ฅ. ฮป๐ฆ. ๐ฆ โถ ๐ฅ โฅ = ๐๐๐๐ โถ ๐คโ๐๐๐ ๐๐๐๐ ๐ ๐ฅ ๐ฆ = ๐ ๐ฆ ๐ฅ โถ / \ โ ๐ก . . / \ ๐ก โ equivalent to [๐ฅ4 , ๐ฅ3 , ๐ฅ2 , ๐ฅ1 ] ๐๐๐๐๐ก๐๐ก๐ฆ ๐๐๐ฃ๐๐๐ ๐ [๐ฅ1 , ๐ฅ2 , ๐ฅ3 , ๐ฅ4 ] > id = foldr (:) [] > rev = foldl (flip (:)) [] > id [1,2,3,4] [1,2,3,4] > rev [1,2,3,4] [4,3,2,1] > id = foldr (\x y -> x:y) [] > rev = foldl (\x y -> y:x) [] > id [1,2,3,4] [1,2,3,4] > rev [1,2,3,4] [4,3,2,1] ๐๐๐๐๐๐๐: โถ ๐ค๐๐กโ โถ ๐ค๐๐กโ ๐๐๐๐๐๐๐: โถ ๐ค๐๐กโ ๐ ๐ค๐๐กโ ๐ var acc = e foreach(x in xs) acc = f (acc, x) return acc folding a list right and left using Cons and Nil results in the identity and reverse functions