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