部分適用

引数が足りてないオブジェクトを作ることが出来る。キモい。

inc :: Int -> Int
inc = (1 +)

(1 + ) 何か

えぇぇぇ。

分解すると、

add :: Int -> Int -> Int -> Int
add x y z = x + y + z

ans = ((((add) 1) 2) 3)

addオブジェクトを作って、(1 +) オブジェクトを作って、(1 + 2 +)オブジェクト。1 + 2 + 3 = 6と・・・。

ナンダコレハ。


Haskellでは引数を2個以上取れないから、コレが普通なんだ。

つまり、addオブジェクトを作って、(1 +) オブジェクトを作って、(3 +)オブジェクト。3 + 3 = 6と計算してる訳だ。

引数が全部揃う前に、計算出来る所は計算してしまえと。ははぁん。

Haskellの謎の部分が少し解けた気がする。