【发布时间】:2009-11-26 07:05:10
【问题描述】:
有很多 Prolog-in-Scheme 实现。例如。 Kanren, Schelog。
显然,在“人工智能编程范式”中,Norvig 在 Lisp 中实现了 Prolog-to-Lisp 编译器,以便使用定句语法。
但是有没有更简单的清洁方法?也许巧妙地使用 amb 来避免实现完整的“Prolog”? 在 Scheme 中进行基于 DCG 的解析的最简单方法是什么?
【问题讨论】:
有很多 Prolog-in-Scheme 实现。例如。 Kanren, Schelog。
显然,在“人工智能编程范式”中,Norvig 在 Lisp 中实现了 Prolog-to-Lisp 编译器,以便使用定句语法。
但是有没有更简单的清洁方法?也许巧妙地使用 amb 来避免实现完整的“Prolog”? 在 Scheme 中进行基于 DCG 的解析的最简单方法是什么?
【问题讨论】:
DCG 使用统一和回溯,因此无法避免实现 Prolog 的核心。也就是说,您可以将任何纯 Prolog 程序表示为解析空列表的 DCG。
如果您只关心 DCG 的某些特殊情况,例如没有变量的 DCG(仅适用于识别,不适用于解析),您可能会这样做。
【讨论】: