https://gist.github.com/4334482
p.37 コンパイル時の警告とか
{-# OPTIONS -Wall -Werror #-}
[ hoge | x <- xs , let hoge = x * 2, hoge > 100]
- x<-xs をジェネレータという
- ジェネレータのあとで変数hogeが束縛されているので、 ジェネレータ内ではhogeは使えない
P.77 foldl/r の説明あたりで
foo a = bar b a
foo = bar b
以下を見ずに実装できるように
replicate 3 5 -- return [5,5,5]
take 3 [5,4,3,2,1] -- return [5,4,3]
reverse "hoge" -- return "egoh"
zip [1,2,3] [5,6] -- return [(1,5),(2,6)]
elem 3 [1,2,3] -- return True
クイックソートの実装
以下を見ずに実装できるように
zipWith (+) [1,2,3] [4,5,6] -- return [5,7,9]
zipWith replicate [1,2,3] "hoge" -- return ["h", "oo", "ggg"]
map (*2) [1,2,3] -- return [2,4,6]
filter (\x -> x `mod` 2 == 0) [1,2,3,4] -- return [2,4]
- 1なら終了
- 偶数なら2で割る
- 奇数なら3倍して1足す
- で生成される過程を配列にする