Shammer's Philosophy

My private adversaria

最簡易デバッグプリントマクロ

プログラムを書いていると、デバッグ目的で変数の値を出力させたいことがある。単純に考えると以下のようになる。

(defun debug (value)
  (format t "Valueの値 : ~A~%" value))

このvalueを二度書く(何の値を出力するのかと、実際の値取得のために)のが何ともナンセンス。ソースコードにこういう同じものは極力なくしたい。
マクロを使えばこう書ける。

(defmacro debug (value)
    `(format t "<DEBUG> ~A : ~A~%" (string ',value) ,value))

関数にしても呼び出す側は同じだけれども、主部?(「Valueの値」の部分)の書き換えが発生することがないから長く使えるのではないだろうか。。。こういう簡単な例でマクロに慣れるのも大事だと思うし。

文字をシンボルに変換するサンプルにもなっているから一応メモしておく。