Real World Haskell - 第4章 Part6 How to think about loops (続き)
Real World Haskell で Haskell を継続的に勉強中。
Chapter 4. Functional programming
Chapter 4. Functional programming
How to think about loops
- for/while ループは Haskell には存在しないので別の方法で表現する必要がある
Folding from the right
- foldr で表現できる関数を primitive recursive と呼ぶ
- リストを操作する関数はほとんど primitive recursive
- filter, map, foldl, etc.
- リストを操作する関数はほとんど primitive recursive
foldr :: (a -> b -> b) -> b -> [a] -> b foldr step zero (x:xs) = step x (foldr step zero xs) foldr _ zero [] = zero
foldr (+) 0 (1:2:3:[]) == 1 + foldr (+) 0 (2:3:[]) == 1 + (2 + foldr (+) 0 (3:[]) == 1 + (2 + (3 + foldr (+) 0 [])) == 1 + (2 + (3 + 0))