【问题标题】:Why are DCGs defined as a compact way to describe lists?为什么 DCG 被定义为描述列表的紧凑方式?
【发布时间】:2015-03-18 21:24:06
【问题描述】:

在我看来,将 DCG(定句语法)定义为 在 Prolog 中描述列表的紧凑方式,是一种糟糕的定义方式。据我所知,DCGs 不仅用于 Prolog,还用于其他编程语言,例如 Mercury。
此外,它们被称为 DCG,因为它们在一组确定子句(Horn 子句)中表示语法,这是逻辑编程的基础。 那么,如果整个 Prolog 程序可以使用明确的子句来编写,为什么 DCG 仅被定义为 一种描述 Prolog 中列表的紧凑方式

注意:这个疑问来自SO给出的标签的描述。

【问题讨论】:

  • 我相信您在 SO 对 DCG 的“定义”中自己注入了形容词 solely。 ;) 所以 SO 关于 DCG 的说法是正确的(就@mat 而言),但这并不是我所说的对 DCG 目的的完整描述。
  • 正是@lurker,这就是我的观点。我所说的“仅”是指这只是 CDG 的好处之一,我想我说得不对,我的错 :)
  • 没问题。 Solely 意味着它是唯一的好处,而不是只是其中一个,而只是一种技术性。我认为它确实提出了一个有趣的问题。 :)

标签: dcg prolog dcg


【解决方案1】:

来自 DCG 标签 wiki 的 extended info 提供了额外的信息,我认为这些信息既正确又与您的第一点非常一致:

"DCG 通常与 Prolog 相关联,但类似的语言如 因为 Mercury 还包括 DCG。”

关于您的第二点:在我看来,强调与 Prolog 列表的密切关联是有道理的,因为 DCG 确实总是描述一个列表,而且通常也非常紧凑。

【讨论】:

    猜你喜欢
    • 2014-08-14
    • 1970-01-01
    • 2017-07-03
    • 2020-12-24
    • 2017-06-07
    • 2010-12-04
    • 1970-01-01
    • 1970-01-01
    • 2012-05-26
    相关资源
    最近更新 更多