Part of INTERACTIVE PROLOG GUIDE | Prev | TOC | Next |
Back to Data Flow and Recursion
In this subsection, we present a generalized list processor which is capable to do various list operations depending on the definition of functions e and f. This program is a simplified version of general list processor from R.A. O'Keefe's book The Craft of Prolog, MIT, 1990.
list_processor([],R):-e(R). list_processor([H|T],R):- list_processor(T,TR), f(H,TR,R).
If we define the functions e and f in a following way:
e(0). f(A,B,C):-C is A+B.
the resulting program sums elements in the list.
The following definition:
e(0/0). f(X,A/B,A1/B1):-A1 is A+X, B1 is B+1.
can be used to compute average of elements of the given list.
The same schema can be used to sort elements in the list or to generate permutations. First we definie functions e and f:
e([]). f(X,L,R):-insert(X,L,R).
If the procedure insert is defined in a following way:
insert(X,[],[X]). insert(X,[Y|T],[X,Y|T]):-X<=Y. insert(X,[Y|T],[Y|NT]):-X>Y,insert(X,T,NT).
the resulting program sorts list.
If the following definition of insert is used:
insert(X,T,[X|T]). insert(X,[Y|T],[Y|NT]):-insert(X,T,NT).
the resulting program generates permutations of given list successively.
Back to Data Flow and Recursion
Part of INTERACTIVE PROLOG GUIDE | Prev | TOC | Next |