1 2/* 3 * some basic procedures 4 */ 5 6:- module(master_basic). 7 8:- export delete/3, 9 select/3, 10 append/3, 11 reverse/2, 12 member/2, 13 length/2. 14 15 16delete([X|Xs], X, Zs) :- 17 !, 18 delete(Ys, X, Zs). 19delete([Y|Ys], X, [Y|Zs]) :- 20 !, 21 delete(Ys, X, Zs). 22delete([], X, []). 23 24 25select(X, [X|Xs], Xs). 26select(X, [Y|Ys], [Y|Zs]) :- 27 select(X, Ys, Zs). 28 29 30append([], X). 31append([X|Xs], Ys, [X|Zs]) :- 32 append(Xs, Ys, Zs). 33 34 35reverse([], []). 36reverse([X|Xs], Zs) :- 37 reverse(Xs, Ys), 38 append(Ys, [X], Zs). 39 40 41member(X, [X|Xs]). 42member(X, [Y|Ys]) :- 43 member(X, Ys). 44 45 46length([], 0). 47length([X|Xs], N) :- 48 length(Xs, N0), 49 N is N0 + 1. 50 51 52