dram.me

在Scheme中实现Prolog

补遗

  1. 还可以参考PicoLisp与数据库和查询相关的设计与实现。—— 2017-03-12

  2. 可以参考Racket的Datalog和Common Lisp的多个Prolog实现。另外Racket的Racklog作为Schelog的移植版本,也可以参考。—— 2017-03-13

  3. Prolog和Scheme的一点区别是:对于非专业人士或者初学者来说,Prolog更易于猜测和理解。如果需要在设计中引入编程语言表达严谨的复杂逻辑,可读性和易于理解都非常重要。—— 2017-03-17

在对LogtalkProlog模块的讨论中,暴露出Prolog模块存在的一些问题,特别是模块名称冲突问题,在当前的生态环境下,并没有好的解决方案。

另一方面,Prolog过渡依赖于运算符的语法模式在一定程度上影响了初学者对代码的理解。还有逻辑和控制部分的耦合也并不十分理想。

基于以上的原因,考虑是否能够在Scheme中实现类似Prolog中数据表示和搜索的机制。正如George F. Luger在《人工智能》中所说的,这是AI最为基本的两个功能,以此作为对Scheme的补充。

以下是零碎的想法,想在研究miniKanrenSchelog之前记录下来。