统一子句中的2个随机变量

时间:2013-04-26 21:01:29

标签: prolog

我需要实现此功能。

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但是还没能破解坚果。

1 个答案:

答案 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个参数的任意结构。