我有Haskell的基本知识(如果我的问题对于Haskellers来说看起来微不足道,请原谅我)并且最近一直在研究Haskell的语法。在Haskell 2010 report中只有一个关键字" type"使用:
topdecl ::= "type" simpletype "=" type
可以看出,总是需要"="
。在一个Haskell文件中,我看到了这段代码:
type Key m :: *
取自TrieMap.hs第61行。
不符合规则。我怀疑这是GHC扩展或其他什么 类似。有人可以向我指出这段代码符合哪种语法规则? 顺便说一句,我没有找到扩展的语法规则,不得不猜测其中的许多,是否在某处记录过?
答案 0 :(得分:7)
这是associated type family declaration,是TypeFamilies
扩展程序的一部分。
它基本上在类声明中用于告诉该类具有与其每个实例相关联的类型。
我不记得有任何地方为扩展提供了很好的BNF语法,尽管我曾经在其存储库中找到GHC's Happy grammar。