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 |

Last update 26

Designed and maintained by Roman Bartak

© December 1997