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

Mat*_*ick 20 monads grammar haskell typeclass applicative

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

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

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

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


赏金澄清: 类型类(es)对应语法水平吗?例如,是否有一组类型类提供表达常规语言所需的所有操作,仅此而已?

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

Phi*_* JF 4

我认为没有人正式展示过这一点。原因是 applicative 和 monad 都无法自行解析大部分内容。相反,你还需要

  1. 选择(MonadPlus、替代)
  2. 递归

也就是说,通过(非确定性)选择和(任意)递归,应用解析器本质上与 BNF 的接口完全匹配(因此可以解析所有 CFL),而 monad 可以提供任意上下文敏感操作。