Sysop: | Amessyroom |
---|---|
Location: | Fayetteville, NC |
Users: | 27 |
Nodes: | 6 (0 / 6) |
Uptime: | 41:17:28 |
Calls: | 631 |
Calls today: | 2 |
Files: | 1,187 |
D/L today: |
24 files (29,813K bytes) |
Messages: | 174,725 |
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))))