Sophie

Sophie

distrib > Mandriva > 8.2 > i586 > media > contrib > by-pkgid > 8a80864b07c5f16e9ba9be320c149cfa > files > 107

teyjus-1.0_b31-15mdk.i586.rpm


%   Predicates in Lambda Prolog that define some of the `higher-order'
%   mapping operations

module	maps.

father jane moses.
father john peter.
father jane john.
father james peter.
father peter charles.

mapfun nil F nil.
mapfun [X|L] F [(F X)|K] :- mapfun L F K.

mappred nil P nil.
mappred (X::L) P (Y::K) :- P X Y, mappred L P K.


reduce_pred (W::nil) P F Y :- P W Y.
reduce_pred (W::L) P F (F Y Z) :- P W Y, reduce_pred L P F Z.

reduce nil F X X.
reduce (W::L) F X (F W Y) :-  reduce L F X Y.

reduce_eval L F Y Z :- reduce L F Y W, Z is W.

for_each nil P.
for_each (X::L) P :- P X, for_each L P.