
14 Jan
2009
14 Jan
'09
6:10 p.m.
Hallo,
On Wed, Jan 14, 2009 at 8:47 PM, Dougal Stanton
(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 ;-)
Don't need to traverse the list at run time, not compile (actually macro-expansion) time. Cheers, -- -alex http://www.ventonegro.org/