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



我知道(->)类型被定义为data (->) t1 t2。我想知道是否有适用于(->)类型的数据构造函数?

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

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

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

从某种意义上说,lambda 表达式x -> e(或者等效地,函数定义(是 a -> b 类型值的"构造函数",但你不能在此基础上进行模式匹配。相反,你使用函数应用程序(f e(来解构("使用"(一个函数。