作为 Prolog 的初学者,我发现 Prolog 中的交换表达式非常不直观。
例如,如果我想表达 X 和 Y 在一个家庭中,例如:
family(X,Y) :-
married(X,Y);
relative(X,Y);
father_son(X,Y).
我还应该在定义中添加以下内容,以使其“可交换”:
married(Y,X);
relative(Y,X);
father_son(Y,X).
但是我们使用 Prolog,因为我们想编写优雅的代码……所以,我希望在原始代码中只添加一行(而不是上面的三行):
family(Y,X).
这是要点。它导致终止!为什么 prolog 不那么“合乎逻辑”?是否有替代这种简洁的单行表达式不会导致终止的替代方法?
周末愉快!瓦