t3x.org / sketchy / library / product.html
SketchyLISP
Reference
  Copyright (C) 2007
Nils M Holm

product

Conformance: SketchyLISP Extension

Purpose: Compute the product of a sequence of positive numbers.

Arguments:
N - least value of sequence
M - maximum value of seqence

Model:

(define (product n m)
  (cond ((= n m) m)
    (else (* n (product (+ n 1) m)))))

Implementation:

(define (product n m)
  (let ((nn (natural n))
       (lim (natural m)))
    (letrec
      ((prod
         (lambda (n r)
           (cond ((n> n lim) r)
             (else (prod (+ n 1) (* n r)))))))
      (cond ((n> nn lim)
          (bottom '(product: bad range)))
        (else (prod nn 1))))))

Example:

(product 5 7) 
=> 210

See also:
sum, iota.