这个 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 declarationTypeFamilies 扩展的一部分。

它基本上用在 class 声明中,告诉 class 有一个与其每个实例关联的类型。

我不记得有什么地方很好地为扩展设计了 BNF 语法,尽管我曾经在它的存储库中找到 GHC's Happy grammar