很多Prolog-in-Scheme实施都在那里。例如。 Kanren,Schelog。
显然在“人工智能编程的范例”中,Norvig在Lisp中实现了Prolog-to-Lisp编译器,以便使用Definite Clause Grammars。
但是有更简单的清洁方式吗?也许一些聪明的使用amb来避免实施完整的“Prolog”? 在Scheme中进行基于DCG的解析的最简单方法是什么?
答案 0 :(得分:5)
DCG使用统一和回溯,因此无法避免实施Prolog的核心。也就是说,您可以将任何纯Prolog程序表示为解析空列表的DCG。
如果您只关心DCG的一些特殊情况,例如没有变量的DCG(仅适用于识别,而不是解析),您可以这样做。