【问题标题】:Correspondence between type classes and grammar levels in the Chomsky hierarchy乔姆斯基层次结构中类型类和语法级别之间的对应关系
【发布时间】:2013-05-17 11:16:21
【问题描述】:

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

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

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

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


赏金说明:类型类是否对应于语法级别?例如, 是否有一组类型类提供表达式正则语言所需的所有操作,仅此而已?

这个问题的动机是我正在研究一个解析器,并且想根据我使用的组合器来确定我的实现处于哪个语法级别。这可能吗?

【问题讨论】:

  • 我认为你的前提是不完整的。 Applicative 本身不会让你走得太远,因为你既不能回溯也不能根据输入选择作品。典型的解析器组合器 API 依赖于 AlternativeApplicative
  • @C.A.McCann 是的,这是真的,感谢您指出这一点。 Alternative 是否对应于常规语法?我想补充一点,但不确定如何处理 Applicative 约束。是否有其他一些与常规语法相对应的类型类?
  • 我不确定。我实际上并不相信这里的联系比Monad 表达Applicative 无法表达的因果关系的一般能力更深,因为我看不到任何形式的自然限制(即,不做作为此目的)解析器组合器将导致只能定义表达能力较差的语法。
  • 进一步考虑,如果我们假设“拒绝一切”原语可用,我也不清楚单子解析器组合器仅限于上下文无关语言,因为它可以进行任意计算在决定是否在任何时候回溯之前。
  • 你应该读到这个:byorgey.wordpress.com/2012/01/05/…

标签: haskell grammar monads typeclass applicative


【解决方案1】:

我认为没有人正式展示过这一点。原因是 applicative 和 monad 都不能自己解析很多东西。相反,您还需要

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

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

【讨论】:

    猜你喜欢
    • 2012-07-17
    • 2011-02-25
    • 2016-01-23
    • 1970-01-01
    • 2011-11-19
    • 1970-01-01
    • 1970-01-01
    • 2013-12-06
    • 1970-01-01
    相关资源
    最近更新 更多