1、常用输出函数:
write:把它的参数作为字符串输出到屏幕上。
从Call端口调用时总是成功的,从Redo端口回溯时总是失败的。
nl:在屏幕上输出一个回车符。
从Call端口调用时总是成功的,从Redo端口回溯时总是失败的。
tab:输出n个空格,n为它的参数(整数)。
从Call端口调用时总是成功的,从Redo端口回溯时总是失败的。
2、启用调试
?- debug.
3、and,or,not
and:两个条件之间,用“,”分割
or:两个条件之间,用“;“分割
not:我使用的版本中,有not函数
比如,下面的例子中,like(X):-(fruit(X);vegetable(X)),not(meat(X)),not(hate(X)).:
panpan喜欢吃的食物逻辑为:
a、喜欢蔬菜和水果
b、不喜欢吃肉
c、有些蔬菜不喜欢
d、其余不喜欢
%swipl -s fruit.pl %Hansen %and(A,B):- A, B. %or(A,B):- A; B. %not(A):- call(A), !, fail. like(X):-(fruit(X);vegetable(X)),not(meat(X)),not(hate(X)). fruit(apple). fruit(grape). fruit(pear). meat(pork). meat(mutton). meat(beef). vegetable(tomato). vegetable(cabbage). vegetable(spinach). vegetable(celery). hate(celery).
所以,panpan不喜欢羊肉,喜欢大白菜,但不喜欢芹菜
1 ?- like(mutton). false. 2 ?- like(cabbage). true. 3 ?- like(celery). false.