/usr/local/lib/swipl/library/aggregate.pl
All Application Manual Name SummaryHelp

  • swipl
    • library
      • error.pl
      • debug.pl
      • apply.pl
      • lists.pl -- List Manipulation
      • broadcast.pl
      • shlib.pl
      • option.pl
      • thread_pool.pl
      • gensym.pl
      • settings.pl -- Setting management
      • arithmetic.pl -- Extensible arithmetic
      • main.pl -- Provide entry point for scripts
      • readutil.pl
      • operators.pl -- Manage operators
      • pairs.pl -- Operations on key-value lists
      • prolog_source.pl
      • record.pl
      • quasi_quotations.pl
      • pure_input.pl -- Pure Input from files and streams
      • solution_sequences.pl
      • ordsets.pl
      • random.pl
      • base64.pl
      • aggregate.pl -- Aggregation operators on backtrackable predicates
        • safe_meta/2
        • aggregate/3
        • aggregate/4
        • aggregate_all/3
        • aggregate_all/4
        • foldall/4
        • foreach/2
        • free_variables/4
      • yall.pl -- Lambda expressions
      • sandbox.pl
      • apply_macros.pl -- Goal expansion rules to avoid meta-calling
      • assoc.pl
      • prolog_format.pl -- Analyse format specifications
      • predicate_options.pl -- Access and analyse predicate options
      • csv.pl
      • pprint.pl -- Pretty Print Prolog terms
      • atom.pl
      • modules.pl
      • occurs.pl -- Finding and counting sub-terms
      • prolog_xref.pl
      • prolog_colour.pl
      • lazy_lists.pl -- Lazy list handling
      • ugraphs.pl
      • url.pl
      • www_browser.pl -- Open a URL in the users browser
      • prolog_pack.pl
      • git.pl
      • utf8.pl
      • dialect.pl
      • system.pl
      • terms.pl -- Term manipulation
      • date.pl
      • persistency.pl -- Provide persistent dynamic predicates
      • iostream.pl -- Utilities to deal with streams
      • prolog_stack.pl
      • edinburgh.pl -- Some traditional Edinburgh predicates
      • prolog_clause.pl
      • prolog_breakpoints.pl
      • wfs.pl
      • prolog_code.pl
      • sort.pl
      • dicts.pl
      • dif.pl
      • varnumbers.pl
      • pio.pl -- Pure I/O
      • qsave.pl
      • zip.pl -- Access resource ZIP archives
      • prolog_autoload.pl -- Autoload all dependencies
      • check.pl
      • tables.pl -- XSB interface to tables
      • base32.pl
      • charsio.pl -- I/O on Lists of Character Codes
      • codesio.pl -- I/O on Lists of Character Codes
      • coinduction.pl
      • heaps.pl -- heaps/priority queues
      • rbtrees.pl
      • statistics.pl
      • when.pl
      • backcomp.pl -- Backward compatibility
      • increval.pl -- Incremental dynamic predicate modification
      • portray_text.pl
      • prolog_codewalk.pl
      • listing.pl -- List programs and pretty print clauses
      • prolog_metainference.pl -- Infer meta-predicate properties
      • rwlocks.pl
      • ansi_term.pl -- Print decorated text to ANSI consoles
      • prolog_config.pl
      • intercept.pl -- Intercept and signal interface
      • optparse.pl
      • nb_set.pl -- Non-backtrackable sets
      • prolog_coverage.pl
      • ctypes.pl -- Character code classification
      • prolog_trace.pl -- Print access to predicates
      • prolog_profile.pl -- Execution profiler
      • fastrw.pl
      • strings.pl
      • shell.pl -- Elementary shell commands
      • writef.pl
      • prolog_versions.pl -- Demand specific (Prolog) versions
      • streams.pl -- Manage Prolog streams
      • make.pl
      • oset.pl
      • prolog_jiti.pl -- Just In Time Indexing (JITI) utilities
      • threadutil.pl -- Interactive thread utilities
      • prolog_debug.pl -- User level debugging tools
      • help.pl
      • quintus.pl
      • explain.pl
      • tty.pl
      • edit.pl
      • prolog_wrap.pl
      • thread.pl
      • macros.pl
      • exceptions.pl
 free_variables(:Generator, +Template, +VarList0, -VarList) is det
Find free variables in bagof/setof template. In order to handle variables properly, we have to find all the universally quantified variables in the Generator. All variables as yet unbound are universally quantified, unless
  1. they occur in the template
  2. they are bound by X^P, setof/3, or bagof/3

free_variables(Generator, Template, OldList, NewList) finds this set using OldList as an accumulator.

author
- Richard O'Keefe
- Jan Wielemaker (made some SWI-Prolog enhancements)
license
- Public domain (from DEC10 library).
To be done
- Distinguish between control-structures and data terms.
- Exploit our built-in term_variables/2 at some places?