( (defun map-with-rest (F L R) (if L (c (a F (list (f L))) (map-with-rest F (r L) R)) R ) ) (defun list-len (X) (if X (+ 1 (list-len (r X))) 0)) (defmac map ARGS (if (= (list-len ARGS) 3) (qq (map-with-rest (unquote (f ARGS)) (unquote (f (r ARGS))) (unquote (f (r (r ARGS)))))) (qq (map-with-rest (unquote (f ARGS)) (unquote (f (r ARGS))) ())) ) ) )