在Prolog中将变量绑定到常量
我想写一个程序,获取一个列表和一组常量,并将列表中的变量绑定到这些常量。我只想将一个常量绑定到一个特定变量。例如:在Prolog中将变量绑定到常量,prolog,Prolog,我想写一个程序,获取一个列表和一组常量,并将列表中的变量绑定到这些常量。我只想将一个常量绑定到一个特定变量。例如: x:- C1=[p,r,o,X,r,a,Y,Y,Z,n,X], bind_vars(C1,[g,m,i],[],Map). 在这里,我希望C1成为[p,r,o,g,r,a,m,m,I,n,g]。 我有下面的实现。能否提高效率 bind_vars([], _, Map,Map). bind_vars([V|Vs],Consts,Map1,Map2):- var(
x:-
C1=[p,r,o,X,r,a,Y,Y,Z,n,X],
bind_vars(C1,[g,m,i],[],Map).
在这里,我希望C1
成为[p,r,o,g,r,a,m,m,I,n,g]。
我有下面的实现。能否提高效率
bind_vars([], _, Map,Map).
bind_vars([V|Vs],Consts,Map1,Map2):-
var(V),!,
member(C,Consts),
\+memberchk(_-C,Map1),!,
V=C,
bind_vars(Vs,Consts,[V-C|Map1],Map2).
bind_vars([_|Vs],Consts,Map1,Map2):-
bind_vars(Vs,Consts,Map1,Map2).
?- C1=[p,r,o,X,r,a,Y,Y,Z,n,X],
term_variables(C1, [g,m,i]).
C1 = [p, r, o, g, r, a, m, m, i, n, g],
X = g,
Y = m,
Z = i.