我的问题一方面是关于Applicative和Monad类型的类,另一方面是关于Chomsky层次结构的无上下文和上下文敏感的语法级别。
我听说类型类和语法级别之间存在对应关系。这种通信有多精确?
也就是说,所有无上下文的语法都可以使用比Applicative组合器更强大的语法来解析,并且所有语法都可以使用比Applicative combinators更强大的语句来解析吗?换句话说,Applicative类型类是否完全对应于无上下文语法?
同样的问题,除了'上下文无关'代替'上下文敏感'和由Monad应用。
Bounty澄清: do type class(es)对应语法级别?例如, 是否有一组类型类提供表达常规语言所需的所有操作,仅此而已?
问题的动机是我正在研究解析器,并希望根据我使用的组合器确定我的实现所处的语法级别。这可能吗?
答案 0 :(得分:4)
我认为没有人正式表明过这一点。原因是,无论是applicat还是monad都无法自己解析任何东西。相反,你还需要
表示,使用(非确定性)选择和(任意)递归,Applicative解析器基本上与BNF的接口完全匹配(因此可以解析所有CFL),而monad可以提供任意的上下文敏感操作。