我需要实现此功能。
unify2(func1(X,Y,Z), R) => R = func1(X,X,Z)
R = func1(X,Y,X)
R = func1(X,Y,Y)
func1没有必要有3个参数,数字可以是任意的。你可以看到,在结果中总是有几个变量统一,其余的术语是相同的。
我会感激一些想法,我一直在研究copy_term但是还没能破解坚果。
答案 0 :(得分:1)
(= ..)/ 2(拼写为univ)它用于分解/组装结构:尝试
unify2(T, R) :-
T =.. [F,X,Y,Z],
( R =.. [F,X,X,Z] ; R =.. [F,X,Y,Z] ; R =.. [F,X,Y,Y] ).
这适用于具有3个参数的任意结构。