A.1 library(aggregate): Aggregation operators on backtrackable predicates
AllApplicationManualNameSummaryHelp

  • Documentation
    • Reference manual
      • The SWI-Prolog library
        • library(aggregate): Aggregation operators on backtrackable predicates
          • aggregate/3
          • aggregate/4
          • aggregate_all/3
          • aggregate_all/4
          • foreach/2
          • free_variables/4
          • safe_meta/2
    • Packages
Availability::- use_module(library(aggregate)).(can be autoloaded)
Source[semidet]aggregate_all(+Template, :Goal, -Result)
Aggregate bindings in Goal according to Template. The aggregate_all/3 version performs findall/3 on Goal. Note that this predicate fails if Template contains one or more of min(X), max(X), min(X,Witness) or max(X,Witness) and Goal has no solutions, i.e., the minimum and maximum of an empty set is undefined.

The Template values count, sum(X), max(X), min(X), max(X,W) and min(X,W) are processed incrementally rather than using findall/3 and run in constant memory.