[add] defmacro