我正在尝试将Haskell数据类型制作成类似于Python字典、Ruby哈希或JavaScript对象的形式,其中一个字符串链接到一个值,如下所示:
上述代码可以正常运行。然而,我希望有一个更好的构造函数,所以我尝试像这样定义它:
这是否意味着中缀类型构造器中可能出现某些字符的特定规则,还是一种误解?我不是 Haskell 新手,也知道使用第一个构造器更符合惯用法,但这个问题让我困扰,而且似乎是我缺失的 Haskell 重要部分。请注意,保留HTML标记。
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 重要部分。请注意,保留HTML标记。
Maybe
。这是容易的部分,但这一点我不理解。 - AJFString
和Int
,查找时间最坏为线性时间,您无法进行破坏性更新(并且您永远不会获得漂亮的dict[key]
语法)。因此它并不像您提到的数据结构... - yatima2975