Aggregate templates simplify aggregating values through various means. Unless otherwise specified, the default means of aggregation is summation.
For large numbers of values, the most convenient way to aggregate is by matching on symbol names. Note that symbols must be available for a match to occur. All imported symbols are immediately available, but \tt{expand-sequence} may need to be used for symbols produced by the same package. \ref{_aggregate-rate-each_} aggregates values of generators (usually referred to by \tt{rate-each}) through summation. A \tt{rate-each} block is generated to perform the summation. Since \tt{rate-each} multiplies its body by \tt{_CMATCH_}, zero symbols would normally result in the summation of \tt{_CMATCH_} itself, which is not desirable; this template always includes \ref{ZERO} in the body to defend against this, causing a yield of~$0.00$ if there are no symbol matches. \ref{_aggregate-rate_} is analgous to \ref{_aggregate-rate-each_}, handling only scalar~\tt{@yields@}. A \tt{rate} block is generated to aggregate by summation. To prevent an empty rate block from being generated if there are no symbol matches, \ref{ZERO} is always included as part of the summation. \ref{_aggregate-classify_} aggregates classifications. Keep in mind that classifications act as universal quantifiers by default, meaning zero symbol matches will produce a match and a scalar~$1$; existential quantifiers (\tt{@any@} set to \tt{true}) will \emph{not} match and will produce the scalar~$0$.