【发布时间】:2012-04-28 03:06:10
【问题描述】:
likes(tom,jerry).
likes(mary,john).
likes(mary,mary).
likes(tom,mouse).
likes(jerry,jerry).
likes(jerry,cheese).
likes(mary,fruit).
likes(john,book).
likes(mary,book).
likes(tom,john).
likes(john,X):-likes(X,john), X\=john.
您好,上面是一个非常简单的 prolog 文件,其中包含一些事实和一条规则:John 喜欢任何喜欢他的人。 但是在加载此文件并询问 Prolog 以下查询后:
likes(john,X).
程序崩溃。原因是 prolog 以某种方式卡在 likes(john,john),即使规则声明 X\=john。
有什么建议吗?
【问题讨论】:
-
出于好奇,如果 X\=john 出现在点赞之前会怎样?
-
很奇怪,如果你把它放在身体前面,Prolog 会返回:
X = book ; false.我不知道为什么它会在book之后停止。
标签: prolog prolog-dif failure-slice