数据类型中的三重冒号 (::::) 在 Haskell 中是什么意思?

aqu*_*ui8 18 haskell

数据类型中的三重冒号 (::::) 在 Haskell 中是什么意思?

例如: data Term = Var ID | Atom String | Nil | Term:::Term

可在本文https://gup.ub.gu.se/file/207634 中找到

将如何使用?

例如,我可以做,foo = Var "hello"但我不知道有什么用Term:::Term

Wil*_*sem 12

(:::)是数据构造函数的名称。因此,您可以使用以下方法定义Term类型:

data Term = Var ID | Atom String | Nil | (:::) Term Term
Run Code Online (Sandbox Code Playgroud)

所以就像你有Var, Atom, 和Nil作为数据构造函数一样,(:::)也是一个数据构造函数。这个数据构造函数接受两个都有Term类型的参数。例如,列表具有(:)作为数据构造函数。

数据构造可以是符号的序列,给定这些开始用冒号(:),并给予它不是保留操作员等:::等,这在指定语法参考Haskell的报告

consym        →   ( : {symbol})⟨reservedop⟩
reservedop    →  .. | : | :: | = | \ | | | <- | -> |  @ | ~ | =>
Run Code Online (Sandbox Code Playgroud)