究竟什么是"逻辑变量",实现语言功能的一般方法是什么?

Sho*_*hon 11 prolog

我正在尝试编写玩具逻辑编程查询语言,基于各种指令来源,包括SICP和Prolog的艺术(AoP).我刚刚开始研究统一算法的第一个草图(根据AoP的"逻辑编程计算模型的核心"),AoP指出

当为特定逻辑编程语言实现统一算法时,避免了堆栈和统一器上的等式中的显式替换.相反,逻辑变量和其他术语由具有不同值的存储器单元表示,并且通过将表示逻辑变量的存储器单元分配给包含变量所绑定的术语的表示的单元来实现变量绑定.(第1版,第71页)

阅读这篇文章让我意识到我对逻辑变量的工作方式只有粗略而实际的把握,但我并不真正理解它们是如何实现的.我甚至不确定将逻辑变量与声明性编程范例的其他区域中的不可变变量区分开来的精确,形式特征是什么.我将感激所有有启发性的解释和有益的参考.

tob*_*ies 6

如果您想了解Prolog编译器和解释器是如何实现的,请查看Warren Abstract Machine.

逻辑变量的基本思想是它们要么绑定到一个术语,要么是自由的,要么别名为不同的逻辑变量.