7

有很多 Prolog-in-Scheme 实现。例如 Kanren,Schelog。

显然,在“人工智能编程范式”中,Norvig 在 Lisp 中实现了 Prolog-to-Lisp 编译器,以便使用定句语法。

但是有没有更简单的清洁方法?也许巧妙地使用 amb 来避免实现完整的“Prolog”?在 Scheme 中进行基于 DCG 的解析的最简单方法是什么?

4

1 回答 1

5

DCG 使用统一和回溯,因此无法避免实现 Prolog 的核心。也就是说,您可以将任何纯 Prolog 程序表示为解析空列表的 DCG。

如果您只关心 DCG 的一些特殊情况,例如没有变量的 DCG(仅适用于识别,而不是解析),您可能会这样做。

于 2009-12-03T10:50:13.560 回答