Findall

Description

An implementation of the findall relation.

Source: PROLOG programming for artificial intelligence, 3rd Edition, Harlow, 2001, ISBN 0-201-40375-7.

Download

Program source code: findall.pl

Listing

% Figure 7.4   An implementation of the findall relation.
 
 
 
 
 
findall( X, Goal, Xlist)  :-
 
  call( Goal),                         % Find a solution
 
  assertz( queue(X) ),                 % Assert it
 
  fail;                                % Try to find more solutions
 
  assertz( queue(bottom) ),            % Mark end of solutions
 
  collect( Xlist).                     % Collect the solutions 
 
 
 
collect( L)  :-
 
  retract( queue(X) ), !,              % Retract next solution
 
  ( X == bottom, !, L = []             % End of solutions?
 
    ;
 
    L = [X | Rest], collect( Rest) ).  % Otherwise collect th
e rest

Comments

RTERR: No permission to modify static procedure.

pl/prolog/pllib/findall.txt · ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0