巨人の肩の上に登る

先人の積み重ねた発見に基づいて、なにかを発見しようとすることを指す。

Haskell の複数の引数を渡す関数の型

複数の引数を渡す関数には、例えば和を求める関数があげられる.

add x y = x + y

これの型を調べると以下のようになる.

> :t add
add :: Int -> Int -> Int

Int と Int を引数にとって, Int を返す関数なのだが、
いまいち複数の引数を取っている感が無い.

先日紹介した,「プログラミング Haskell」(邦題 : Programming in Haskell) 3.6 章の解説でようやく理解できた.


そもそも複数の引数を取るというのが間違いであり,カリー化されていただけだ。
先程の型に括弧をつけると以下のようになる.

add :: Int -> (Int -> Int)

つまり,Int 型の引数を一つ取り,"Int 型の引数を取りInt型を返す関数"を返す型ということだ.


カリー化の考案者を Haskell Curry だと勘違いしていました.
実際は Gottlob Frege という人らしい.(wiki