假设 Haskell 或 lambda 演算呈现以下函数类型:
A -> B -> C
(A -> B) -> C
这两者有何不同?
第一个是函数 from A
to a(函数 from B
to C
)。第二个是从 (functions from A
to B
) to的函数C
。第一个“接受两个论点”,第二个“接受一个论点”。第一个是普通函数,第二个是“高阶函数”。
以下是您的类型的两个示例函数,可帮助您了解它们的不同之处:
valatzero :: Num a => (a -> t) -> t
valatzero f = f 0
plus :: Num a => a -> a -> a
plus x y = x + y