我找到了下面的示例这里
instance Monad Maybe where
Nothing >>= f = Nothing
(Just x) >>= f = f x
return = Justreturn方法是以无点样式定义的,我知道它适用于函数,但是这里有一个数据构造函数,其声明语法看起来与函数的语法不同,更不用说它的用途了。
另一个教程他说
数据构造函数是Haskell中的第一类值,实际上有一个类型。例如,任一数据类型的左构造函数的类型是: 左:b,a,a,->,a,a,b 作为第一类值,它们可以传递给函数,保存在一个列表中,是其他代数数据类型的数据元素,等等。
因此,是否有人能清楚地说明什么是数据构造函数,以及它们与函数有何不同。
发布于 2013-11-04 15:12:13
至少,一个具体的区别是,数据(值)构造函数可以用于模式匹配,而非数据构造函数的函数则不能。这是我所能想到的唯一真正的区别,除了“髓质”数据构造器(认为Nothing)是,嗯,髓。
发布于 2013-11-04 15:19:45
数据构造函数只是一个eta缩减功能:
Just === \x -> Just x
Left === \x -> Left x但是Nothing是一个没有参数的函数。
https://stackoverflow.com/questions/19770636
复制相似问题