对于Haskell类型签名,如babel :: a - > b - > c,c是返回类型吗?

1 haskell types type-signature

为什么Haskell不使用某种特殊格式来反映这一点,或者 - > c可以用另一种方式理解?

ƛƛƛ*_*ƛƛƛ 5

您可以通过两种方式查看babel的类型签名.

  • (1)babel采用类型的两个输入ab; 它产生一个类型的输出c.
  • (2)babel接受类型的输入a并产生类型的输出(b -> c).

(1)为您提供了背式的值cbabel充分的应用.(2)给你回类型的中间功能(b -> c)babel部分地施加; 如果您选择将中间函数应用于类型的值b,则可以获得从案例(1)获得的结果.

这种选择部分或完全应用函数的能力使您能够通过将简单(中间)函数粘合在一起来构建复杂函数.

为什么Haskell不使用某种特殊格式来反映这一点......?

默认情况下,Haskell中的所有函数都接受一个输入; 两个参数的函数只是一个返回函数的函数.默认情况下,Currying在类型签名中已经很明显.这就是为什么要(->)联合到右边,所以我们不必写babel :: a -> (b -> c)