カリー化
関数(+)というのは、引数ふたつをとり、引数を足したものを返す関数です。
Prelude> (+) 1 3 4
これは、「引数をひとつをもらい、もう一つの引数に、足したものを返す」関数といえます。もし、この関数が引数を一つもっている状態だったら、どのようにいえるでしょうか?
(+) 1
この状態では、「あと一つ引数をもらうと、1と足したものを返す」関数といえますね。
ここで、
oneplus = (+) 1
という、oneplusを定義すると、この関数は「引数をひとつもらい、1と足したものを返す」関数になります。
Main> oneplus 3 4
このように、引数を部分的にあたえること(部分適用)ができる仕組みのことをカリー化というそうです。
この仕組みのおかげで、めんどそうな関数の定義も簡単に記述することができるようになります。