Shouldn't you be using define-modify-macro and/or setf-macro-expander for that?
e.g. (define-macro-expander ensure-functionf/1 (x) ensure-function) (defmacro ensure-functionf (&rest places) `(progn ,@(mapcar (lambda (x) `(ensure-functionf/1 ,x)))))
good point!
so, i'll push this eventually in the absent of other comments.