http://www.csupomona.edu/~jrfisher/www/prolog_tutorial/2_1.html
所以在那个教程中它有:
conflict(Coloring) :-
adjacent(X,Y),
color(X,Color,Coloring),
color(Y,Color,Coloring).
我的理解是否正确,Color 是一个变量,在第一次调用 color
后被设置为一个值然后在第二次调用 color
时使用该值?
最佳答案
Prolog 中的变量:
所有变量和参数在声明它们的谓词(即首次使用)的范围内都是局部的。当然,变量可以作为参数(本质上是“通过引用”)传递给另一个谓词除外。
Prolog 变量在与其他东西绑定(bind)(统一)之前只是“变量”。在那一点上,它们不再是可变的,并与它们所统一的东西合而为一。因此使用术语“统一”:统一就是成为一个。
当然,回溯会取消任何可能发生的统一,将事情恢复到原状。
特殊变量
_
是“匿名变量”。每次使用,即使在谓词的同一个子句中也是独立的。例如,给定事实letter(a). letter(b). letter(c). digit(1). digit(2). digit(3).
谓词:
foo :- letter(A),number(A).
失败,而
foo :- letter(_),number(_).
将成功(9 次,有回溯)。
关于prolog - 变量及其在序言中的设置和使用方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9026035/