/* MULTIL : Multi-List routines UTILITY Lawrence Updated: 11 September 81 */ %%% MULTIL requires module: APPLIC mlmaplist(P,Lists) :- ml_taketop(Lists,Line1,Lists2), !, apply(P,[Line1]), mlmaplist(P,Lists2). mlmaplist(_,L) :- !, ml_allempty(L). mlmaplist(P,Lists,V) :- ml_taketop(Lists,Line1,Lists2), !, apply(P,[Line1,V]), mlmaplist(P,Lists2,V). mlmaplist(_,L,_) :- !, ml_allempty(L). mlmaplist(P,Lists,Vin,Vfin) :- ml_taketop(Lists,Line1,Lists2), !, apply(P,[Line1,Vin,Vout]), mlmaplist(P,Lists2,Vout,Vfin). mlmaplist(_,L,Vfin,Vfin) :- !, ml_allempty(L). mlmember(Els,Lists) :- ml_taketop(Lists,Line1,Lists2), ( Els = Line1 ; mlmember(Els,Lists2) ). mlselect(Els,Lists,Lists3) :- ml_taketop(Lists,Line1,Lists2), ( Els = Line1, Lists3 = Lists2 ; mlselect(Els,Lists2,Rest), Lists3 = [Line1|Rest] ). % Support routines for stripping off all first % elements into a list, and seeing if there are % no more elements. ml_taketop([[E|T1],..T2],[E|T3],[T1,..T4]) :- ml_taketop(T2,T3,T4). ml_taketop([],[],[]). ml_allempty([[],..TL]) :- ml_allempty(TL). ml_allempty([]).