% ==================================================== :- pred constr(bool). :- mode constr(in). :- ignore constr/1. % ================================================================= % Program :- pred append(list(int),list(int),list(int)). :- mode append(in,in,out). append([],Ys,Ys). append([X|Xs],Ys,[X|Zs]) :- append(Xs,Ys,Zs). % ================================================================= % Catamorphism. % ------------- % all_leq(List,N,Res) Res iff all elements of List are =< N :- pred all_leq(list(int),int,bool). :- mode all_leq(in,in,out). :- cata all_leq/3-1. all_leq([],N,Res) :- constr( Res ). all_leq([Y|Ys],N,Res) :- constr( Res=ite(Y=