home *** CD-ROM | disk | FTP | other *** search
- /*
- Copyright (c) 1986, 90 by Prolog Development Center
- */
-
- trail=500
-
- domains
- tree = reference t(val, tree, tree)
- val = integer
- list = integer*
-
- predicates
- insert(integer, tree)
- instree(list, tree)
- treemembers(integer, tree)
- sort(list, list)
-
- clauses
- insert(Val, t(Val, _, _)) :- !.
- insert(Val, t(Val1, Tree, _)) :- Val<Val1, !, insert(Val, Tree).
- insert(Val, t(_, _, Tree)) :- insert(Val, Tree).
-
- instree([], _).
- instree([H|T], Tree) :-
- insert(H, Tree),
- instree(T, Tree).
-
- treemembers(_, T) :- free(T), !, fail.
- treemembers(X, t(_, L, _)) :- treemembers(X, L).
- treemembers(X, t(Refstr, _, _)) :- X = Refstr.
- treemembers(X, t(_, _, R)) :- treemembers(X, R).
-
- sort(L, L1) :-
- instree(L, Tree),
- findall(X, treemembers(X, Tree), L1).
-
- goal
- sort([3, 6, 1, 4, 5], L), write(L).
-