八葉の日記

日々、感じたことをまとめる場として利用する

高階関数

Haskellでは引数に関数をとったり、戻り値で関数を返したりできる。このような関数を高階関数という。

なお、Haskellではすべての関数は引数を1つとる関数であるため、引数を2つとっている関数は、カリー化という仕組みで解決している。

カリー化 - Wikipedia

 

例えばmaxの型は、

:t max
max :: Ord a => a ->( a -> a)

 

a型を受け取って、a型を引数にとってa型を返す関数を返すになります。

そして、戻した関数が第2引数に適用される。