0

Warren 的 Abstract Machine A Tutorial Reconstruction 说明了以下变量寄存器分配规则:

  • 变量寄存器是根据最少可用索引分配的。
  • 寄存器 X1 总是分配给最外层的项。
  • 相同的寄存器分配给给定变量的所有出现。

在本教程的进一步内容中,在构建程序查询时,给出了以下示例:

p(f(X), h(Y, f(a)), Y).

X1 = p(X2, X3, X4)
X2 = f(X5)
X3 = h(X4, X6)
X4 = Y
X5 = X
X6 = f(X7)
X7 = a

我的疑问是在考虑 f 子句的两次出现时,它们都是 f/1 结构,但具有不同的主体,因此需要以不同的方式实例化。但是,在 WAM 上下文中,究竟什么是变量、序言变量或每个术语?该条款p(f(a), f(a))将如何构建:

X1 = p(X2, X2)
X2 = f(X3)
X3 = a

或者

X1 = p(X2, X3)
X2 = f(X4)
X3 = f(X4)
X4 = a
4

0 回答 0