Chomsky层次结构中类型类和语法级别之间的对应关系

时间:2013-05-17 11:16:21

标签: haskell grammar monads typeclass applicative

我的问题一方面是关于Applicative和Monad类型的类,另一方面是关于Chomsky层次结构的无上下文和上下文敏感的语法级别。

我听说类型类和语法级别之间存在对应关系。这种通信有多精确?

也就是说,所有无上下文的语法都可以使用比Applicative组合器更强大的语法来解析,并且所有语法都可以使用比Applicative combinators更强大的语句来解析吗?换句话说,Applicative类型类是否完全对应于无上下文语法?

同样的问题,除了'上下文无关'代替'上下文敏感'和由Monad应用。


Bounty澄清: do type class(es)对应语法级别?例如, 是否有一组类型类提供表达常规语言所需的所有操作,仅此而已?

问题的动机是我正在研究解析器,并希望根据我使用的组合器确定我的实现所处的语法级别。这可能吗?

1 个答案:

答案 0 :(得分:4)

我认为没有人正式表明过这一点。原因是,无论是applicat还是monad都无法自己解析任何东西。相反,你还需要

  1. 选择(MonadPlus,替代方案)
  2. 递归
  3. 表示,使用(非确定性)选择和(任意)递归,Applicative解析器基本上与BNF的接口完全匹配(因此可以解析所有CFL),而monad可以提供任意的上下文敏感操作。