我知道(->)类型被定义为data (->) t1 t2。我想知道是否有(->)类型的数据构造函数?
发布于 2017-04-08 16:38:05
不,(->)没有数据构造函数,因为函数不是代数数据类型。事实上,ghci说
Prelude> :inf (->)
data (->) t1 t2 -- Defined in ‘GHC.Prim’这是一个谎言,因为这不是定义(->)的方式。事实上,这里没有定义,因为函数是一个非常原始的概念。
从某种意义上说,lambda表达式\x -> e (或等效的函数定义)是a -> b类型值的“构造器”,但不能对其进行模式匹配。相反,您可以使用函数应用程序(f e)来解构(“使用”)函数。
https://stackoverflow.com/questions/43297606
复制相似问题