我試圖在Prolog中定義繼承檢查謂詞is_a/2
,但到目前爲止我所有的試用都失敗了。在prolog中定義is_a謂詞?
object(bare).
object(mammal).
object(animal).
object(bird).
is_a(bare, mammal).
is_a(mammal, animal).
is_a(bird, animal).
is_a(X, Y):- <definition goes here>.
的定義應該使得下面的查詢將返回true:
?- is_a(bare, animal).
true.
我試圖
每當Y是X的超例如is_a(X, Y)
謂語應返回true定義它顯然的方式,但我陷入了無限循環:
is_a(X, Y):- X\==Y, object(X), object(Y), object(Z), is_a(X, Z), is_a(Z, Y).
有什麼建議嗎?
正是我在找的:) 非常感謝你,3lectrolyte – 2010-01-16 02:30:15