
14 Jan
2009
14 Jan
'09
10:47 p.m.
(defun avg (&rest args) (/ (apply #'+ args) (length args)))
Or as a macro like this:
(defmacro avg (&rest args) `(/ (+ ,@args) ,(length args)))
The reason the macro is better is that the length of the list is known at compile time, so you don't need to traverse the list to calculate the length of the list.
I'm trying to work out how awesome the (+) operator is that you can add the values together without needing to traverse the list ;-) D