式一つ分のコメントアウト
common lispで開発していると、たまに式一つ分だけコメントアウトしたくなることがある。
そういった機能は標準ではないかと思っていたが、条件付き読み込み(?)を使えば似たようなことが出来ることに気がついた。
;; (+ 20 30)をコメントアウト > (+ 10 #+c (+ 20 30) 40) --> 50 ;; #-と#+を併用して使用する式を切り替える > (+ 10 #+c (+ 20 30) #-c 40) --> 50 > (+ 10 #-c (+ 20 30) #+c 40) --> 60
いろいろ試行錯誤を繰り返している時とかに、役に立つかもしれない。
追記(2010/03/31): *features*
#+と#-は、*features*を見て式を読み込むかどうかは判断するので、使う式を切り替えるだけなら次のようにしても良いかもしれない。
> *features* --> (:ASDF :ANSI-CL :COMMON-LISP :SBCL :SB-DOC :SB-TEST ...) > (defun switch (sym) (if (find sym *features*) (setf *features* (remove sym *features*)) (push sym *features*))) --> SWITCH > (+ 10 #+c (+ 20 30) #-c 40) --> 50 > (switch :c) > (+ 10 #+c (+ 20 30) #-c 40) --> 60 > (switch :c) > (+ 10 #+c (+ 20 30) #-c 40) --> 50