home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 9 / 09.iso / l / l217 / 2.ddi / EXAMPLES / CH21EX04.PRO < prev    next >
Encoding:
Text File  |  1990-03-26  |  895 b   |  39 lines

  1. /*
  2.    Copyright (c) 1986, 90 by Prolog Development Center
  3. */
  4.  
  5. trail=500
  6.  
  7. domains
  8.    tree = reference t(val, tree, tree)
  9.    val  = integer
  10.    list = integer*
  11.  
  12. predicates
  13.    insert(integer, tree)
  14.    instree(list, tree)
  15.    treemembers(integer, tree)
  16.    sort(list, list)
  17.  
  18. clauses
  19.    insert(Val, t(Val, _, _)) :- !.
  20.    insert(Val, t(Val1, Tree, _)) :- Val<Val1, !, insert(Val, Tree).
  21.    insert(Val, t(_, _, Tree)) :- insert(Val, Tree).
  22.  
  23.    instree([], _).
  24.    instree([H|T], Tree) :-
  25.       insert(H, Tree),
  26.       instree(T, Tree).
  27.  
  28.    treemembers(_, T) :- free(T), !, fail.
  29.    treemembers(X, t(_, L, _)) :- treemembers(X, L).
  30.    treemembers(X, t(Refstr, _, _)) :- X = Refstr.
  31.    treemembers(X, t(_, _, R)) :- treemembers(X, R).
  32.    
  33.    sort(L, L1) :-
  34.       instree(L, Tree),
  35.       findall(X, treemembers(X, Tree), L1).
  36.  
  37. goal
  38.    sort([3, 6, 1, 4, 5], L), write(L).
  39.