関数

遂にHaskellの真骨頂(?)である、関数に進みます。
この章は特に重要なので、じっくりと読み進めていきます。

8.1 値としての関数

無名関数について

λ式という言葉はよく耳にしていましたが、なるほど変数を束縛しない関数のことなんですね。
λ式と言うとこの定義とリンクしにくいですけど、無名関数と言われるとしっくり来ますね。


この無名関数が使えるとghciでの実験の幅が広がりますね。関数が扱えるので。

Prelude> map (\n -> n * n * n) [5, 10, 15]
[125,1000,3375]
Prelude> map (\c -> if (c == '\n') then '@' else c) "abcd\nefgh\nijkl\n"
"abcd@efgh@ijkl@"


でもあまりに複雑な関数を無名鑑数として定義するのはあまりよろしくなさそう。
複雑な関数はきちんと変数束縛した方がよさげですね。
あと引数のパターンを1種類しか書けないのも、注意すべき点ですね。