macroexpandとかの話
macroexpandというのをNANRIさんに教えてもらったので早速使いまくって、色々見てみたら、之は実に面白い。今までhelpをみても意味不明だなぁとか思っていたのがifや単純な形に直ぐに展開してくれるので、非常に便利。
一応
■macroexpand使い方 ;ex:whenを展開 (macroexpand '(when t (t))) =>(if t (progn (t)))
しかも、これの更に便利なのは、今まで知らないのとかはGrepして定義されている所とかを見ていたけど、創作したのとかもでも直ぐに展開してくれる感じ。
ヘルプに書いてあった使用例↓
使用例: ;;; マクロM2を定義してどのように展開 (defmacro M2 (&rest args) `(progn (m-setup) ,@args (m-cleanup))) (macroexpand '(M2 (insert "Begin") (insert "End"))) => (progn (m-setup) (insert "Begin") (insert "End") (m-cleanup))
というか、関数じゃなかったのね。マクロというものの存在を今頃知ったのは秘密。