カリー化、ハスケル
- こちらにカリー化の話がある
- こちらにもある
- 関数として統一的に扱いたい、という気持ちがあるので、関数は引数を一つだけとることにする
- 複数とるためには、一つ取る関数に一つの引数を取らせ、その引数を一つとった状態にある関数(これは「関数という一つのもの」)を取り出して、これに次の1つの関数を取らせる、という形式をとる
- 必然的に、入れ子構造になる
- f1()
- f2=f1(x1)()
- f3=f2(x2)()=f1(x1)(x2)()
- どうしてこうしたいのか
- すべての関数には一つの引数があって、その帰結(それが値だったり、関数だったりするが)がある、という単純な決まりになる
- m個の関数を取る関数に[tex:n
- 関数を頭から途中までで扱うことができるだけでなく、1個ずつ引数をとっている関数の数珠つなぎの途中から途中まで、というのも宙ぶらりんではなく、扱うことができる