变量及其在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次,回溯