0
我想編寫一個程序,該程序需要一個列表和一組常量,並將列表中的變量綁定到常量。我只想要一個常量被綁定到一個特定的變量。例如:將變量綁定到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(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).