Syntax matters (setq new-list (mapcar (lambda (e) (do-process e)) list)) new_list = list.collect {|e| e.do_process} No macro needed