我需要实现这个功能。
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 但还没有解决问题。
我需要实现这个功能。
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 但还没有解决问题。
(=..)/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 个参数的任意结构。