【发布时间】:2018-11-29 07:36:27
【问题描述】:
我仍在学习 prolog,但遇到了这个错误。
Warning: /usr/local/home/jay275/SDRIVE/cs3500/hw7/part1.pl:23:
Clauses of bird/1 are not together in the source-file
Earlier definition at /usr/local/home/jay275/SDRIVE/cs3500/hw7/part1.pl:10
Current predicate: animal/1
Use :- discontiguous bird/1. to suppress this message
我想说的是,如果是鹰,那么它就是一只鸟。 如果它是一只鸟,那么它就是一种动物......等等......
这是我的代码:
cat(sylvester).
cat(felix).
dog(spike).
dog(fido).
primate(george).
primate("king kong").
bird(tweety).
hawk(tony).
fish(nemo).
%then Mammal if cat or dog or primate
mammal(X) :- cat(X) ; dog(X) ; primate(X).
%then Animal if mammal or bird or fish
animal(X) :- mammal(X) ; bird(X) ; fish(X).
%then bird if hawk
bird(X) :- hawk(X).
编辑:我不认为这个错误实际上会导致任何问题,但我只是确保我没有做任何不正确的事情。
EDIT2:TAS 通过将以下代码放在一起回答了我的问题。
bird(tweety).
%then bird if hawk
bird(X) :- hawk(X).
hawk(tony).
【问题讨论】:
-
bird(tweety).和bird(X) :- hawk(X).行之间还有其他谓词,将它们放在连续的行中,就像使用 dog/1 和 cat/1 一样。 -
对不起,我试图理解你的意思,但我正在尝试做我认为你在谈论的事情,但它仍然给我一个错误。
-
其实你的意思是扔鸟(X):-鹰(X)。在鸟(翠蒂)之后。 ?
-
@tas:想让这个成为正确的答案吗?
-
@lambda.xy.x:完成。
标签: prolog