Slide 2
Slide 2 text
โถ
/ \
๐ฅ1
โถ
/ \
๐ฅ2
โถ
/ \
๐ฅ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