SketchyLISP Reference |
Copyright (C) 2007 Nils M Holm |
<<[substring] | [Index] | [succ]>> |
Conformance: SketchyLISP Extension
Purpose: Compute the sum of a sequence of positive numbers.
Arguments:
N - least value of sequence
M - maximum value of seqence
Model:
(define (sum n m) (cond ((= n m) m) (else (+ n (sum (+ n 1) m)))))
Implementation:
(define (sum n m) (let ((nn (natural n)) (nm (natural m))) (letrec ((_sum (lambda (n m) (let ((x (+ 1 (- m n)))) (+ (quotient (+ (* x x) x) 2) (* (- n 1) x)))))) (cond ((> nn nm) (bottom '(sum: bad range))) (else (_sum nn nm))))))
Example:
(sum 2 5) => 14
<<[substring] | [Index] | [succ]>> |