我知道(->)
类型定义为data (->) t1 t2
。我想知道有(->)
类型的数据构造函数吗?
答案 0 :(得分:7)
不,(->)
没有数据构造函数,因为函数不是代数数据类型。事实上,ghci说
Prelude> :inf (->)
data (->) t1 t2 -- Defined in ‘GHC.Prim’
有点谎言,因为这不是(->)
的定义方式。事实上,没有定义,因为函数是一个非常原始的概念。
在某种意义上,lambda表达式\x -> e
(或者,等效地,函数定义)是类型a -> b
的值的“构造函数”,但是您不能对其进行模式匹配。相反,您使用函数应用程序(f e
)来解构(“使用”)函数。