カリー化、ハスケル

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