Lisp

昨日のマクロ

謎が解けた。というか会社の人に教えてもらった。 (defmacro when* (test &rest body) (if test `(progn ,@body))) こんな感じのが昨日のマクロ。これの何が悪かったのかというと、test がフォームのまま評価されていたということ。つまり (when* (equal 1 2…

昨日のマクロその 2

これで何をやりたかったかというと、Emacs Lisp のコンパイル警告を抑止したかっただけ。無視しても大したことはないんだろうけども。例えば howm をバイトコンパイルすると、以下のようなコンパイル警告が出る。 In riffle-summary-mode: riffle.el:191:4:W…

マクロで条件つきコンパイルみたいなことがやりたい

C の #if みたいなことを、Lisp のマクロでやりたい。が、うまくいかず。xyzzy と Emacs で想定した動きにならなかったので、なんか自分の凡ミスだとは思ってるんだけど。 (defmacro when* (pred &rest body) (when pred `(progn ,@body))) で、以下のように…