0

我需要实现这个功能。

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 但还没有解决问题。

4

1 回答 1

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

于 2013-04-26T21:20:20.397 回答