这个 Haskell 代码的语法规则是什么?
What is the grammar rule for this Haskell code?
我有 Haskell 的基本知识(所以如果我的问题对这里的 Haskell 读者来说微不足道,请原谅我)并且最近一直在研究 Haskell 的语法。在Haskell 2010 report中只有一个地方使用关键字"type":
topdecl ::= "type" simpletype "=" type
并且可以看出,总有一个 "="
是必需的。在一个 Haskell 文件中,我看到了这段代码:
type Key m :: *
摘自 TrieMap.hs 第 61 行。
这不符合规则。我怀疑这是一个 GHC 扩展或者什么的
相似的。谁能指出这段代码符合哪条语法规则?
顺便说一句,我没有找到扩展的语法规则,不得不猜测其中的许多规则,是否有记录在某处?
这是 associated type family declaration,TypeFamilies
扩展的一部分。
它基本上用在 class 声明中,告诉 class 有一个与其每个实例关联的类型。
我不记得有什么地方很好地为扩展设计了 BNF 语法,尽管我曾经在它的存储库中找到 GHC's Happy grammar。
我有 Haskell 的基本知识(所以如果我的问题对这里的 Haskell 读者来说微不足道,请原谅我)并且最近一直在研究 Haskell 的语法。在Haskell 2010 report中只有一个地方使用关键字"type":
topdecl ::= "type" simpletype "=" type
并且可以看出,总有一个 "="
是必需的。在一个 Haskell 文件中,我看到了这段代码:
type Key m :: *
摘自 TrieMap.hs 第 61 行。
这不符合规则。我怀疑这是一个 GHC 扩展或者什么的 相似的。谁能指出这段代码符合哪条语法规则? 顺便说一句,我没有找到扩展的语法规则,不得不猜测其中的许多规则,是否有记录在某处?
这是 associated type family declaration,TypeFamilies
扩展的一部分。
它基本上用在 class 声明中,告诉 class 有一个与其每个实例关联的类型。
我不记得有什么地方很好地为扩展设计了 BNF 语法,尽管我曾经在它的存储库中找到 GHC's Happy grammar。