Может кому пригодится.
Чуть изменил http://paste.lisp.org/display/70281 под elisp:
(defmacro* cut (&body body)
"Scheme's cut macro
http://srfi.schemers.org/srfi-26/srfi-26.html"
(let* ((form body)
(args (loop for p from 1 to (count '<> form)
collect (intern (format "G%d" p))))
(rest (eq (car (last form)) '<...>))
(gs (gensym)))
`(lambda ,(if rest `(,@args &rest ,gs) args)
,(append
(when rest `(apply ',(pop form)))
(loop for i in form
collect (case i
('<> (pop args))
('<...> gs)
(otherwise i)))))))
(mapcar (cut * 2 <>) (number-sequence 1 5)) --> (2 4 6 8 10)
Для краткости `define-key' можно ещe (но здесь ничего интересного):
(defmacro cuti (&body body)
`(lambda () (interactive) ,body))
Вестимо можно добавить поддержку (interactive «p») etc., скажем через <p>, но, судя по моему конфигу необходимость слабая.
ps... cut - макрос из схемы (srfi-42), на paste.lisp.org - адапатция для лиспа, в отличие от схемы не работает ((cut * 2 <>) 5)