haskell

ラムダ式、関数の部分適用、カリー化

長くなった。。Real World Haskell―実戦で学ぶ関数型言語プログラミング P103 〜 P107 あたりの話。 記述に正確を期すようにすればするほど難しい言葉ばかりが並んでしまって何が何だか分からなくなってしまう。 分かりやすさを優先して多少はくだけた表現で…

foldl について

「畳み込み」を行う関数の一つである foldl 。 *main> foldl (+) 0 [1,2,3] 6のようにリストの中身である1、2、3を左から足して、結果が6になる、という挙動を示す。いったいどういう仕組みなのだろうか。 foldl の定義は、 foldl :: (a -> b -> a) -> a -> …

reverse を自分で実装

突然 Haskell ネタ。リストの要素を逆順にして返す関数、reverse。これと同等の機能を自作してみよう。車輪の再発明だけど学習の過程においては効果的な方法なのである。 myReverse :: [a] -> [a] myReverse [] = [] myReverse (x:xs) = myReverse xs ++ [x]…