这个Haskell代码的语法规则是什么?

时间:2015-02-22 18:20:06

标签: haskell syntax

我有Haskell的基本知识(如果我的问题对于Haskellers来说看起来微不足道,请原谅我)并且最近一直在研究Haskell的语法。在Haskell 2010 report中只有一个关键字" type"使用:

topdecl ::=  "type" simpletype "=" type

可以看出,总是需要"="。在一个Haskell文件中,我看到了这段代码:

type Key m :: *

取自TrieMap.hs第61行。

不符合规则。我怀疑这是GHC扩展或其他什么 类似。有人可以向我指出这段代码符合哪种语法规则? 顺便说一句,我没有找到扩展的语法规则,不得不猜测其中的许多,是否在某处记录过?

1 个答案:

答案 0 :(得分:7)

这是associated type family declaration,是TypeFamilies扩展程序的一部分。

它基本上在类声明中用于告诉该类具有与其每个实例相关联的类型。

我不记得有任何地方为扩展提供了很好的BNF语法,尽管我曾经在其存储库中找到GHC's Happy grammar