首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据构造函数是函数吗?

数据构造函数是函数吗?
EN

Stack Overflow用户
提问于 2013-11-04 15:06:14
回答 2查看 384关注 0票数 0

我找到了下面的示例这里

代码语言:javascript
复制
instance Monad Maybe where
    Nothing  >>= f = Nothing
    (Just x) >>= f = f x
    return         = Just

return方法是以无点样式定义的,我知道它适用于函数,但是这里有一个数据构造函数,其声明语法看起来与函数的语法不同,更不用说它的用途了。

另一个教程他说

数据构造函数是Haskell中的第一类值,实际上有一个类型。例如,任一数据类型的左构造函数的类型是: 左:b,a,a,->,a,a,b 作为第一类值,它们可以传递给函数,保存在一个列表中,是其他代数数据类型的数据元素,等等。

因此,是否有人能清楚地说明什么是数据构造函数,以及它们与函数有何不同。

EN

回答 2

Stack Overflow用户

发布于 2013-11-04 15:12:13

至少,一个具体的区别是,数据(值)构造函数可以用于模式匹配,而非数据构造函数的函数则不能。这是我所能想到的唯一真正的区别,除了“髓质”数据构造器(认为Nothing)是,嗯,髓。

票数 6
EN

Stack Overflow用户

发布于 2013-11-04 15:19:45

数据构造函数只是一个eta缩减功能:

代码语言:javascript
复制
Just === \x -> Just x

Left === \x -> Left x

但是Nothing是一个没有参数的函数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19770636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档