Next: , Previous: loops comprehensions vector, Up: loops comprehensions


47.2.5 Arithmetic accumulator loops

— Syntax: sum-ec ?qualifier ... expression

The sum of all values of expression. Think of it as:

          (apply + (list-ec ?qualifier ... expression))

Examples:

          (sum-ec                 ;no qualifiers
            1)
          ⇒ 1
          
          (sum-ec (:range i 0)
            i)
          ⇒ 0
          
          (sum-ec (:range i 1)
            i)
          ⇒ 0
          
          (sum-ec (:range i 2)
            i)
          ⇒ 1
          
          (sum-ec (:range i 3)
            i)
          ⇒ 3
— Syntax: product-ec ?qualifier ... expression

The product of all values of expression. Think of it as:

          (apply * (list-ec ?qualifier ... expression))

Examples:

          (product-ec             ;no qualifiers
            1)
          ⇒ 1
          
          (product-ec (:range i 1 0)      ;i from 1 to 1
            i)
          ⇒ 1
          
          (product-ec (:range i 1 1)      ;loop zero times
            i)
          ⇒ 1
          
          (product-ec (:range i 9 9)      ;loop zero times
            i)
          ⇒ 1
          
          (product-ec (:range i 1 2)      ;i from 1 to 1
            i)
          ⇒ 1
          
          (product-ec (:range i 1 3)      ;i from 1 to 2
            i)
          ⇒ 2
          
          (product-ec (:range i 1 4)      ;i from 1 to 3
            i)
          ⇒ 6
— Syntax: min-ec ?qualifier ... expression
— Syntax: max-ec ?qualifier ... expression

The minimum and maximum of all values of expression. The sequence of values must be non-empty. Think of these as

          (apply min (list-ec ?qualifier ... expression))
          (apply max (list-ec ?qualifier ... expression))

If we want to return a default value in case the sequence is empty we may want to consider:

          (fold3-ec 'infinity ?qualifier ... expression min min)