(require 'stdlib) (define (average-function args) (/ (apply + args) (length args))) (defmacro average-macro (args) `(/ (+ ,@args) (length ,args))) (let ((r '(1 2 3 4 5 6))) (puts (average-function r)) (puts (average-macro r))) ;; accepts list argument or atoms (define (foo #!rest args) (when (listp (car args)) (setq args (car args))) (/ (apply + args) (length args))) (puts (foo '(1 2.3 4 4))) (puts (foo 1 2 3 4 5.6))