8 prolog
为什么这不能在Prolog中定义"已婚"?
married(X,Y):-married(Y,X).
Run Code Online (Sandbox Code Playgroud)
这些循环谓词是不允许的?我该如何解决?
谢谢
如果我的语法错误,请原谅我,自从我和Prolog一起玩了一段时间后.
一个典型的解决方案是在子句中引入另一个级别,如下所示:
married(X, Y) :- wife(X, Y).
married(X, Y) :- wife(Y, X).
Run Code Online (Sandbox Code Playgroud)
然后使用wife子句指定关系:
wife(jane, bob).
wife(alice, john).
?- married(jane, X).
X = bob
Run Code Online (Sandbox Code Playgroud)
更多信息可以在这里找到:CSc 8710,演绎数据库和逻辑编程,第6章 - 逻辑和数据库,6.5 - 特殊关系.