很多Prolog-in-Scheme实施都在那里。例如。 Kanren,Schelog。

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

但是有更简单的清洁方式吗?也许一些聪明的使用amb来避免实施完整的“Prolog”? 在Scheme中进行基于DCG的解析的最简单方法是什么?

有帮助吗?

解决方案

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top