findall
BAP Online Manuals : Library
Reference : Library by Name
: findall
Previous: filledpolygon
Next: flush_print_buffer
BAP Online Manuals : Library Reference : Library by Name : findall
Previous: filledpolygon
Next: flush_print_buffer
Previous: filledpolygon
Next: flush_print_buffer
6.2.56. findall
builds a list of all arguments that cause a goal to succeed
SYNOPSIS
INCLUDE 'prolib.h' findall(X,goal(X,args),L)
SYNTAX
findall(X,Goal,List)(i,i,o)
ARGUMENTS
void(X) (i) Some Variable contained with in Goal
void(Goal) (i) the goal to be satisfied
voidlist(Goal) (i) a list of all objects X that cause Goal to succeed
DESCRIPTION
This is a standard prolog predicate. By the use of the database, all elements X that
match Goal are collected into List. X should be contained within Goal, otherwise you just
get a list of variables whose listlen equals the number of solutions of Goal. As findall is
using call, the Goal predicate must be exported somewhere.
The definition of findall is:
PREDICATE findall(void,void,voidlist). findall(X,Call,_):- % X is contained somewhere in Call asserta(findall_tmp(start)), call(Call), b % call goal (bind X) assertz(findall_tmp(X)), fail. findall(_,_,ResList):- findall_collect(ResList),!. PREDICATE findall_collect(voidlist). % collect results of Call findall_collect([Elem|Rest]):- retract(findall_tmp(Elem)), Elem \= start, findall_collect(Rest). findall_collect([]).
LAYERS
prolog-process, client-server, object
RELATED PREDICATES
BAP Online Manuals : Library Reference : Library by Name : findall
Previous: filledpolygon
Next: flush_print_buffer