为什么将 DCG 定义为描述列表的紧凑方式?

Why are DCGs defined as a compact way to describe lists?

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

注:疑点来自SO给出的标签的描述。

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

"DCGs are usually associated with Prolog, but similar languages such as Mercury also include DCGs."

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