今日も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]なんか、意味不明な記号が多くて若干pe○lみたいで嫌ですが。。
main = do print $ myMap (\x -> x*x) a
print $ myFilter (\x -> x `mod` 2 /= 0) a
print $ myReduce (\x y -> x+y) a
今日はここまで。
0 件のコメント:
コメントを投稿