2
如果我的术语是关闭的,我已经提前申请了一个术语,从我接触Prolog开始已经有几年了,我决定尝试清除我的序列帽,并再次探索的。将术语的值转换为原子
我会直接进入代码,然后通过事后描述问题。此代码不是我的情况的确切主题。
mammal :- true.
reptile :- true.
animals_that_are(_,_) :-
write('Not found!'),
nl,
false.
animals_that_are(mammal, L) :-
L = [lion, elephant, dog].
animals_that_are(reptile, L) :-
L = [lizard, turtle].
does_animal_belong_to_group(Species, Group) :-
animals_that_are(Group, Animals),
member(Species, Animals).
所以基本问题是,当调用does_animal_belong_to_group(lion, mammal)
时,文本Not Found!被显示并失败,向我暗示,原子哺乳动物和狮子正在转化为术语,因此不会与他们各自的规则相关联。
当我直接调用两个规则,我得到预期的结果
animals_that_are(reptile, L).
L = [lizard, turtle].
有没有一种方法,一个原子可以通过一个学期获得通过,在这种情况下,则原子重新提取或很我解决这个错误的方式?
当然,这是有道理的。我所做的事情看起来很复杂,并且知道我已经把事情搞糟了,因为它曾经有一段时间,因为我甚至触及了一种没有程序的语言。感谢您的建议和解释! –
那些缩写“哺乳动物: - 真实”表明你正在尝试一些*更复杂的事情。最终,随时跟进这个问题...... – CapelliC
当然。我不确定它是否有必要,但我实际上是用它来作为原子的*声明。然而,正如我在阅读我的一些旧的uni笔记,似乎我实际上并不需要预先声明事情。 –