变量以及如何在prolog中设置和使用它们

时间:2012-01-26 22:01:13

标签: 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). 

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

2 个答案:

答案 0 :(得分:3)

Prolog中的变量:

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

  2. Prolog变量只有“变量”才能与其他东西绑定(统一)。在那一点上,它们不再是变数,而是与它们统一的那个变成一个。因此,使用“统一”这一术语:统一就是成为一体。

  3. 当然,回溯会撤消可能发生的任何统一,将事情按原样返回现状

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

    letter(a).
    letter(b).
    letter(c).
    
    digit(1).
    digit(2).
    digit(3).
    
  5. 谓词:

    foo :- letter(A),number(A).
    

    失败,而

    foo :- letter(_),number(_).
    

    将成功(9次,带回溯)。

答案 1 :(得分:1)

将它变为变量,但我们不能说它是否会从第一次或第二次调用color / 3获得一个值(在Prolog中称为绑定)。一切都取决于颜色/ 3的定义。但是考虑到这段代码,很可能你的假设没问题。