Spis treści

Meta interpreter 5

Description

A meta-interpreter for determining a residue

Source: The Art of Prolog

Download

Program source code: meta_interpreter_5.pl

Listing

/*
        preduce(Goal,Residue) :-
           Partially reduce Goal to leave the residue Residue.
*/
        preduce(true,true) :-  !.
        preduce((A,B),(PA,PB)) :-  !, preduce(A,PA), preduce(B,PB).
        preduce(A,B) :-  should_fold(A,B), !.
        preduce(A,Residue) :-
           should_unfold(A), !, clause(A,B), preduce(B,Residue).
        preduce(A,A).
 
%     Program 18.2: A meta-interpreter for determining a residue

Comments