Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 在哈斯克尔,什么是:+;:在数据类型定义中是什么意思?_Haskell - Fatal编程技术网

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哦,嗯,我在想
类型运算符
。我不知道为数据构造函数使用运算符是标准的。非常难看。通常丑陋的事物是扩展:)