我学习Haskell。来自Haskell 2010文档:
- 以冒号开头的运算符符号是构造函数。
- 以任何其他字符开头的运算符符号是普通标识符。
我不明白第一句话。我知道存在数据构造函数和类类型构造函数。这个案例有什么构造函数?也许我需要一个代码示例。
答案 0 :(得分:6)
您可以定义
之类的内容data Symbolic n
= Constant n
| Variable String
| Symbolic n :+ Symbolic n
| Symbolic n :* Symbolic n
deriving (Show)
GHCI>让v =变量; c =常数
GHCI> c 2:* v“a”:+ c 3
(常数2:*变量“a”):+常数3
这就是第一个短语所指的内容。
答案 1 :(得分:4)
我知道存在数据构造函数和类类型构造函数。这种情况下构造函数是什么?
在标准Haskell中,只有数据构造函数可以是符号,类型名称必须是字母数字。如果启用GHC扩展TypeOperators,类型名称也可以是符号,允许您定义以:
开头的类型构造函数。