为什么这不能在 Prolog 中定义“已婚”?
married(X,Y):-married(Y,X).
这些类型的循环谓词不允许吗?我该如何解决它?
Thanks
如果我的语法错误请原谅我,我已经有一段时间没有使用 Prolog 了。
典型的解决方案是在子句中引入另一个级别,如下所示:
married(X, Y) :- wife(X, Y).
married(X, Y) :- wife(Y, X).
然后使用wife子句来指定关系:
wife(jane, bob).
wife(alice, john).
?- married(jane, X).
X = bob
更多信息可以在这里找到:CSc 8710,演绎数据库和逻辑编程,第 6 章 - 逻辑和数据库 http://tinman.cs.gsu.edu/~raj/8710/sp07/ch6.pdf,根据 6.5 - 特殊关系。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)