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

  • swipl
    • library
      • error.pl
      • debug.pl -- Print debug messages and test assertions
      • apply.pl
      • lists.pl -- List Manipulation
      • broadcast.pl
      • shlib.pl -- Utility library for loading foreign objects (DLLs, shared objects)
      • option.pl
      • thread_pool.pl -- Resource bounded thread management
      • gensym.pl
      • settings.pl
      • arithmetic.pl
      • main.pl -- Provide entry point for scripts
      • readutil.pl -- Read utilities
      • operators.pl -- Manage operators
      • pairs.pl
      • prolog_source.pl
      • record.pl -- Access compound arguments by name
      • quasi_quotations.pl -- Define Quasi Quotation syntax
      • pure_input.pl -- Pure Input from files and streams
      • solution_sequences.pl -- Modify solution sequences
      • ordsets.pl
      • random.pl -- Random numbers
      • base64.pl -- Base64 encoding and decoding
      • 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
      • sandbox.pl
      • apply_macros.pl -- Goal expansion rules to avoid meta-calling
      • assoc.pl -- Binary associations
      • prolog_format.pl -- Analyse format specifications
      • predicate_options.pl
      • csv.pl
      • pprint.pl
      • atom.pl
      • modules.pl -- Module utility predicates
      • occurs.pl -- Finding and counting sub-terms
      • prolog_xref.pl
      • prolog_colour.pl -- Prolog syntax colouring support.
      • lazy_lists.pl
      • ugraphs.pl -- Graph manipulation library
      • url.pl
      • www_browser.pl -- Open a URL in the users browser
      • prolog_pack.pl -- A package manager for Prolog
      • git.pl
      • utf8.pl -- UTF-8 encoding/decoding on lists of character codes.
      • dialect.pl -- Support multiple Prolog dialects
      • system.pl -- System utilities
      • terms.pl
      • 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 -- Manage Prolog break-points
      • wfs.pl
      • prolog_code.pl
      • sort.pl
      • dicts.pl
      • dif.pl -- The dif/2 constraint
      • varnumbers.pl -- Utilities for numbered terms
      • pio.pl -- Pure I/O
      • base32.pl
      • charsio.pl
      • codesio.pl -- I/O on Lists of Character Codes
      • coinduction.pl
      • heaps.pl
      • rbtrees.pl -- Red black trees
      • statistics.pl
      • when.pl
      • backcomp.pl
      • zip.pl
      • check.pl
      • prolog_codewalk.pl -- Prolog code walker
      • prolog_debug.pl -- User level debugging tools
      • tables.pl -- XSB interface to tables
      • ctypes.pl -- Character code classification
      • prolog_config.pl
      • writef.pl
      • prolog_wrap.pl
      • explain.pl -- Describe Prolog Terms
      • exceptions.pl
      • nb_set.pl -- Non-backtrackable sets
      • strings.pl -- String utilities
      • optparse.pl -- command line parsing
      • make.pl -- Reload modified source files
      • threadutil.pl -- Interactive thread utilities
      • increval.pl
      • ansi_term.pl
      • prolog_versions.pl
      • prolog_profile.pl -- Execution profiler
      • prolog_autoload.pl -- Autoload all dependencies
      • edit.pl -- Editor interface
      • oset.pl -- Ordered set manipulation
      • streams.pl
      • readln.pl
      • thread.pl -- High level thread primitives
      • prolog_trace.pl
      • listing.pl -- List programs and pretty print clauses
      • shell.pl
      • intercept.pl
      • quintus.pl
      • prolog_coverage.pl
      • prolog_metainference.pl -- Infer meta-predicate properties
      • help.pl -- Text based manual
      • prolog_jiti.pl -- Just In Time Indexing (JITI) utilities
      • rwlocks.pl
      • hashtable.pl
      • portray_text.pl
      • qsave.pl
      • prolog_history.pl
      • tty.pl
      • macros.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?