Да, это именно то, что делают макросы. Вот простой макрос, который строит функции в соответствии с указанным вами шаблоном:
(defmacro make-my-function (name)
(list 'defun (intern (format "my-%s-function" name)) ()
(list 'interactive)
(list (intern (format "mark-%s" name)))
(list 'do-more-stuff)
(list (intern (format "modify-%s" name)))))
Вы можете скопировать этот макрос в буфер *scratch*
в Emacs и оценить его, а затем убедиться, что он работает следующим образом:
(make-my-function x) ; type control-J here
my-x-function ; <-- Emacs's output
(symbol-function 'my-x-function) ; type control-J here
(lambda nil (interactive) (mark-x) (do-more-stuff) (modify-x)) ; <-- Emacs's output
Чаще всего можно использовать средство backquote для более краткой записи макросов, но все макросы в основном работают так же, как и в примере выше.