变量及其在prolog中的设置和使用方式
因此,在该教程中:变量及其在prolog中的设置和使用方式,prolog,Prolog,因此,在该教程中: conflict(Coloring) :- adjacent(X,Y), color(X,Color,Coloring), color(Y,Color,Coloring). 我是否理解正确,颜色是一个变量,在第一次调用颜色后设置为一个值,然后在第二次调用颜色时使用该值?Color它是一个变量,但我们不能说它是否会在Prolog中获得一个值。这从第一次或第二次调用Color/3时被称为绑定。这一切都取决于颜色/3的定义。但鉴于此代码,您的假设很可能是
conflict(Coloring) :-
adjacent(X,Y),
color(X,Color,Coloring),
color(Y,Color,Coloring).
我是否理解正确,颜色是一个变量,在第一次调用颜色后设置为一个值,然后在第二次调用颜色时使用该值?Color它是一个变量,但我们不能说它是否会在Prolog中获得一个值。这从第一次或第二次调用Color/3时被称为绑定。这一切都取决于颜色/3的定义。但鉴于此代码,您的假设很可能是正确的。Prolog中的变量: 所有变量和参数在声明它们的谓词的作用域中都是局部的。当然,变量可以通过引用另一个谓词作为参数传递也是例外 在与其他变量绑定之前,Prolog变量是唯一的变量。在那一点上,他们不再是可变的,而成为他们与之统一的一者。因此,统一一词被使用:统一就是成为一 当然,回溯会破坏任何可能发生的统一,使事情恢复原状 特殊变量是匿名变量。即使在谓词的同一子句中,每次使用也是独立的。例如,考虑到事实
letter(a).
letter(b).
letter(c).
digit(1).
digit(2).
digit(3).
谓词:
foo :- letter(A),number(A).
失败,而
foo :- letter(_),number(_).
将成功9次,回溯