变量以及它们在 prolog 中的设置和使用方式

cst*_*fel 2 prolog

http://www.csupomona.edu/~jrfisher/www/prolog_tutorial/2_1.html

所以在那个教程中它有:

conflict(Coloring) :- 
   adjacent(X,Y), 
   color(X,Color,Coloring), 
   color(Y,Color,Coloring). 
Run Code Online (Sandbox Code Playgroud)

我是否正确理解这一点, Color 是一个变量,在第一次调用后设置为一个值color,然后在第二次调用时使用该值color

Nic*_*rey 5

Prolog 中的变量:

  1. 所有变量和参数在声明它们的谓词范围内都是本地的(也称为首次使用)。当然,变量可以作为参数(本质上是“通过引用”)传递给另一个谓词。

  2. Prolog 变量在与其他东西绑定(统一)之前只是“变量”。到那时,它们就不再是可变的,而是与它们所统一的事物合而为一。因此使用“统一”一词:统一就是成为一体。

  3. 当然,回溯会取消任何可能发生的统一,使事情恢复到原来的状态

  4. 特殊变量_是“匿名变量”。每次使用,即使在谓词的同一子句中也是独立的。例如,鉴于事实

    letter(a).
    letter(b).
    letter(c).
    
    digit(1).
    digit(2).
    digit(3).
    
    Run Code Online (Sandbox Code Playgroud)

谓词:

foo :- letter(A),number(A).
Run Code Online (Sandbox Code Playgroud)

失败,同时

foo :- letter(_),number(_).
Run Code Online (Sandbox Code Playgroud)

会成功(9次,有回溯)。