Slide 1

Slide 1 text

CHEAT-SHEET Folding #5 โˆถ / \ ๐’‚๐ŸŽ โˆถ / \ ๐’‚๐Ÿ โˆถ / \ ๐’‚๐Ÿ โˆถ / \ ๐’‚๐Ÿ‘ ๐’‡ / \ ๐’‚๐ŸŽ ๐’‡ / \ ๐’‚๐Ÿ ๐’‡ / \ ๐’‚๐Ÿ ๐’‡ / \ ๐’‚๐Ÿ‘ ๐’† @philip_schwarz slides by https://fpilluminated.com/

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