Haskell 在哈斯克尔,什么是:+;:在数据类型定义中是什么意思?
这是新数据类型的定义:Haskell 在哈斯克尔,什么是:+;:在数据类型定义中是什么意思?,haskell,Haskell,这是新数据类型的定义: data Total a = Total a :+: Total a |... 在这个类型定义中:+:是什么意思?它是以中缀形式编写的数据构造函数。如果运算符以:开头,则可以将其作为构造函数。简单地说,:是大写符号:请注意,从GHC 7.6开始,类型运算符扩展现在将所有中缀运算符视为“大写”。(这打破了将中缀运算符用作类型变量的现有代码…@user1720938:用于视觉对称。纯粹是美学上的东西。@C.A.McCann:当然,只是在类型层面
data Total a = Total a :+: Total a
|...
在这个类型定义中:+:是什么意思?它是以中缀形式编写的数据构造函数。如果运算符以
:
开头,则可以将其作为构造函数。简单地说,:
是大写符号:请注意,从GHC 7.6开始,类型运算符
扩展现在将所有中缀运算符视为“大写”。(这打破了将中缀运算符用作类型变量的现有代码…@user1720938:用于视觉对称。纯粹是美学上的东西。@C.A.McCann:当然,只是在类型层面?否则,(+)
将是一个构造函数名,而不是值名,而这个问题是关于构造函数名的。要为@C.a.McCann的注释添加一些可能不太清楚的上下文:在类型表达式中使用符号,如Int+Char
,扩展将所有符号视为“大写”。在值范围中,:
仍然是唯一的大写符号,值构造函数符号仍然必须以:
开头。它在标准Haskell中无效。这是一个奇怪的GHC扩展:)@singpolyma:这是标准的(见consym产品)。毕竟,列表的:
构造函数只是一个特例。也许你在想类型运算符
?@hammar哦,嗯,我在想类型运算符
。我不知道为数据构造函数使用运算符是标准的。非常难看。通常丑陋的事物是扩展:)