Kenny Tilton wrote:
What if the sequence is empty?
(defun average (sequence)
(let ((len 0)
(sum 0))
(map nil #'(lambda (elt)
(incf len)
(incf sum elt))
sequence)
(if (zerop len)
0
(/ sum len))))
(defun average (sequence &key (key #'identity) &aux (len 1))
(/ (reduce (lambda (x y)
(incf len)
(+ x y))
sequence :key key :initial-value 0)
len))
Testing:
* (average '(2 3 4))
9/4
Incorrect.
Gauche Scheme
(define (average seq)
(let1 len 0
(if (null? seq)
0
(/ (fold (lambda (x sum) (inc! len) (+ x sum))
0
seq)
len))))
--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)