(defmacro defclient-callback (name args &body body) `(defmacro ,name () (<:as-is (js:js* `(defun ,,name ,,args ,,@body))))) (defclient-callback client-callback1 (event) (alert "client-callback1 is called.")) expansion of client-callback1: (DEFMACRO CLIENT-CALLBACK1 () (IT.BESE.YACLML.TAGS:AS-IS (JS* `(DEFUN ,CLIENT-CALLBACK1 ,(EVENT) ,(ALERT "client-callback1 is called.")))))