【发布时间】:2013-02-25 04:38:25
【问题描述】:
假设 Haskell 或 lambda 演算呈现以下函数类型:
A -> B -> C
(A -> B) -> C
这两者有何不同?
【问题讨论】:
-
第一个相当于A -> (B -> C)。这是你的问题吗?
假设 Haskell 或 lambda 演算呈现以下函数类型:
A -> B -> C
(A -> B) -> C
这两者有何不同?
【问题讨论】:
第一个是从A到a的函数(从B到C的函数)。第二个是从(从A 到B 的函数)到C 的函数。第一个“接受两个论点”,第二个“接受一个论点”。第一个是普通函数,第二个是“高阶函数”。
【讨论】:
以下是您的类型的两个示例函数,可帮助您了解它们的不同之处:
valatzero :: Num a => (a -> t) -> t
valatzero f = f 0
plus :: Num a => a -> a -> a
plus x y = x + y
【讨论】: