prolog - 如何创建一个规则,使 Prolog 中的所有关系对称?

标签 prolog

我想要的是当我定义:

marriedTo(martin, annie).

它还使以下内容为真:
marriedTo(annie, martin).

我尝试了以下方法,但它(显然)是一个无限循环。
marriedTo(X,Y) :- marriedTo(Y,X).

我将如何在 Prolog 中做到这一点?

最佳答案

最简单的解决方法是:

marriedTo(martin, annie).
...
married(X,Y) :- marriedTo(X,Y).
married(X,Y) :- marriedTo(Y,X).

然后还有很多其他的方法、实现和语义来解决无限递归的问题......

关于prolog - 如何创建一个规则,使 Prolog 中的所有关系对称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14639317/

相关文章:

prolog - Prolog 中的聊天机器人

prolog - 列出给定库模块中的谓词

prolog - Memberchk/2的声明性使用

algorithm - 如何让这个序言代码在合理的时间内运行?

Prolog - N-Queens 测验 - 无限循环

prolog - 从列表创建矩阵

algorithm - 在没有 findall 和过滤器的情况下找到最佳结果

arrays - 如何在 ECLiPSe (CLP) 中将向量转换为数组? (或序言)

Prolog - 参数未充分实例化

prolog - 如何在序言中写一个方括号?