( - >)是否有数据构造函数?

时间:2017-04-08 16:34:05

标签: haskell

我知道(->)类型定义为data (->) t1 t2。我想知道有(->)类型的数据构造函数吗?

1 个答案:

答案 0 :(得分:7)

不,(->)没有数据构造函数,因为函数不是代数数据类型。事实上,ghci说

Prelude> :inf (->)
data (->) t1 t2     -- Defined in ‘GHC.Prim’

有点谎言,因为这不是(->)的定义方式。事实上,没有定义,因为函数是一个非常原始的概念。

在某种意义上,lambda表达式\x -> e(或者,等效地,函数定义)是​​类型a -> b的值的“构造函数”,但是您不能对其进行模式匹配。相反,您使用函数应用程序(f e)来解构(“使用”)函数。