今日もHaskell。
今日は、昨日の復習とlambda expressionについて。
まず、昨日の復習として、
- map
- filter
- reduce
を自分で実装してみます。これを実現するためには、
- Pattern match
- tuple
を使えばいいです。
- myReduce f [] = 0
- myReduce f (x:xs) = f x (myReduce f xs)
- myMap f [] = []
- myMap f (x:xs) = [f x] ++ (myMap f xs)
- myFilter f [] = []
- myFilter f (x:xs) = if f x
- then [x] ++ (myFilter f xs)
- else myFilter f xs
そして、上記自前関数の引数にlambda式を使ってみましょう。
Haskellでは、lambda expressionは"\"(バックスラッシュ)と"->"(ハイフンと大なり記号)を用いて表されます。
- a = [1 .. 10]
- main = do print $ myMap (\x -> x*x) a
- print $ myFilter (\x -> x `mod` 2 /= 0) a
- print $ myReduce (\x y -> x+y) a
今日はここまで。
0 件のコメント:
コメントを投稿