はじめに
-
すごいHaskellたのしく学ぼうを読んだのでちょっとずつまとめていきたい。まとめていきたい。
-
シリーズ
ラムダ式
そもそもラムダ式とは
- 一回だけ使用する関数を作りたいときに使う
- 別名は
無名関数
-
(\ <引数> -> <式>)
で定義できる - 定義の先頭の
\
はλ
にみえるんじゃないかなーと思う
-- mapで与える引数にラムダ式を使ってみる
*Main Lib> map (\x -> x * 3 + 5) [1,2,3,4,5]
[8,11,14,17,20]
*Main Lib> map (\xs -> length xs < 3) ["aiueo", "aiu", "ai", "a"]
[False,False,True,True]
*Main Lib> map (\xs -> head xs) ["aiueo", "aiu", "ai", "a"]
"aaaa"
- カリー化を表現するような書き方もできる
-- 引数を一部与えると「残りの引数を与えたときに全体の値を返す関数」を返す関数を定義
*Main Lib> (\x -> \y -> \z -> x * y * z) 3 2 1
6
*Main Lib> multiple6 = (\x -> \y -> \z -> x * y * z) 3 2
*Main Lib> multiple6 7
42
-- flip関数を自分で定義するときはこの書き方が便利
flip' :: (a -> b -> c) -> b -> a -> c
flip' f = \x y -> f y x