谓词 numbervars/3 本身并不是 ISO 的一部分 核心标准,但是ISO核心标准已经有一点了 支持
numbervars/3
可以做什么,因为打印句柄
numbervars/3 可以产生的
'$VAR'/1
化合物:
?- T = f('$VAR'(0), '$VAR'(1), '$VAR'(0)).
T = f(A, B, A).
?- T = f(X,Y,X), numbervars(T, 0, _).
T = f(A, B, A),
X = A,
Y = B.
我想知道 Prolog 系统是否曾经提供过 numbervars/3 的反向以及这样的反向的名称是什么 会去的。我想反过来也可以:
?- T = f('$VAR'(0), '$VAR'(1), '$VAR'(0)), reverse_numbervars(T, S, L, _).
T = f(A, B, A),
S = f(_0, _1, _0).
L = [_0, _1|_]
或者是否可以从
reverse_numbervars/4
引导
一些现有的谓词没有完全编码。我猜
它可以通过递归遍历第一个参数来编码
并用新变量替换
'$VAR'/1
化合物。
好的,我看到 SB-Prolog 有 unnumbervars/3:
https://www3.cs.stonybrook.edu/~sbprolog/manual2/node6.html
只是它有不同的签名。但这是一个开始!