Haskellまたはラムダ計算が次の関数型を表すと仮定します。
A-> B-> C
(A-> B)-> C
これら2つはどのように異なりますか?
1 つ目は、関数 from A
to a (関数 from B
to C
) です。2 つ目は、(functions from A
to B
) toからの関数C
です。1 つ目は「2 つの引数を取ります」、2 つ目は「1 つの引数を取ります」。1つ目は通常の関数、2つ目は「高次関数」です。
これらがどのように異なるかを理解するのに役立つ、タイプを使用した2つの関数の例を次に示します。
valatzero :: Num a => (a -> t) -> t
valatzero f = f 0
plus :: Num a => a -> a -> a
plus x y = x + y