我知道(->)
类型被定义为data (->) t1 t2
。我想知道是否有适用于(->)
类型的数据构造函数?
不,(->)
没有数据构造函数,因为函数不是代数数据类型。GHCI说的事实
Prelude> :inf (->)
data (->) t1 t2 -- Defined in ‘GHC.Prim’
有点谎言,因为这不是(->)
的定义。事实上,周围没有定义,因为函数是一个非常原始的概念。
从某种意义上说,lambda 表达式x -> e
(或者等效地,函数定义(是 a -> b
类型值的"构造函数",但你不能在此基础上进行模式匹配。相反,你使用函数应用程序(f e
(来解构("使用"(一个函数。