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?
Prolog 中的变量:
所有变量和参数在声明它们的谓词范围内都是本地的(也称为首次使用)。当然,变量可以作为参数(本质上是“通过引用”)传递给另一个谓词。
Prolog 变量在与其他东西绑定(统一)之前只是“变量”。到那时,它们就不再是可变的,而是与它们所统一的事物合而为一。因此使用“统一”一词:统一就是成为一体。
当然,回溯会取消任何可能发生的统一,使事情恢复到原来的状态。
特殊变量_是“匿名变量”。每次使用,即使在谓词的同一子句中也是独立的。例如,鉴于事实
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次,有回溯)。
| 归档时间: |
|
| 查看次数: |
23569 次 |
| 最近记录: |