数据类型中的三重冒号 (::::) 在 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 TermRun Code Online (Sandbox Code Playgroud)
所以就像你有Var, Atom, 和Nil作为数据构造函数一样,(:::)也是一个数据构造函数。这个数据构造函数接受两个都有Term类型的参数。例如,列表具有(:)作为数据构造函数。
数据构造可以是符号的序列,给定这些开始用冒号(:),并给予它不是保留操作员等:,::等,这在指定语法参考Haskell的报告:
Run Code Online (Sandbox Code Playgroud)consym → ( : {symbol})⟨reservedop⟩ reservedop → .. | : | :: | = | \ | | | <- | -> | @ | ~ | =>