以冒号开头的运算符符号是构造函数

时间:2015-01-22 11:55:40

标签: haskell

我学习Haskell。来自Haskell 2010文档:

  
      
  • 以冒号开头的运算符符号是构造函数。
  •   
  • 以任何其他字符开头的运算符符号是普通标识符。
  •   

我不明白第一句话。我知道存在数据构造函数类类型构造函数。这个案例有什么构造函数?也许我需要一个代码示例。

2 个答案:

答案 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,类型名称也可以是符号,允许您定义以:开头的类型构造函数。