Plaster

common-lisp
;; ignore nil (defun maptree-1 (func x) (cond ((consp x) (cons (maptree-1 func (car x)) (maptree-1 func (cdr x)))) ((null x) nil) (t (funcall func x)))) ;; ignore nil in the cdr (defun maptree-2 (func x) (if (consp x) (cons (maptree-2 func (car x)) (if (null (cdr x)) nil (maptree-2 func (cdr x)))) (funcall func x))) ;; don't ignore nil (defun maptree-3 (func x) (if (consp x) (cons (maptree-3 func (car x)) (maptree-3 func (cdr x))) (funcall func x)))