Haskell 中缀数据类型构造函数的语法规则

2023-11-25

我试图使 Haskell 数据类型有点像 python 字典、ruby 哈希或 javascript 对象,其中字符串链接到值,如下所示:

data Entry t = Entry String t
type Dictionary t = [Entry t]

上面的代码工作正常。但是,我想要一个稍微好一点的构造函数,所以我尝试像这样定义它:

data Entry t = String ~> t

这失败了。我试过这个:

data Entry t = [Char] ~> t

再次失败。我知道~在 Haskell 中具有特殊含义,并且 GHCi 仍然允许运算符~>,但我仍然尝试了另一种方法:

data Entry t = [Char] & t

由于解析错误而再次失败。我觉得这很令人困惑,因为出于某种无法解释的原因,这有效:

data Entry t = String :> t

这是否意味着中缀类型构造函数中可能出现的字符有一定的规则,或者是一种误解。我不是 Haskell 的新手,我知道使用第一个构造函数会更惯用,但是这个构造函数难倒了我,而且它似乎是我所缺少的 Haskell 的重要部分。


任何以冒号开头的运算符:是类型构造函数或数据构造函数,但以下情况除外(->)。如果你想要波形符,你可以使用:~>,但是你不会侥幸使用不以冒号开头的东西。Source

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Haskell 中缀数据类型构造函数的语法规则 的相关文章

随机推荐