実践Common Lisp p63-100
読みました。感想とか一生懸命書くようにすると読み進めるのが遅くなりそうなのであまり書きません。
ただ、実践Common Lispと直接関係ないんですが、コードを書いてて気になった点があります。
Emacsの問題なんですが、しかもまたインデントなんですが、バッククォートの後だとインデントがおかしくなります。
(defmacro do-primes ((var start end) &body body) (with-gensyms (ending-value-name) `(do ((,var (next-prime ,start) (next-prime (1+ ,var))) (,ending-value-name ,end)) ((> ,var ,ending-value-name)) ,@body)))
こんな風に。たぶんcl-indent.elを弄れば直りそうなので後でやりたいと思います。
とりあえずの回避法として、
(defmacro do-primes ((var start end) &body body) (with-gensyms (ending-value-name) ` (do ((,var (next-prime ,start) (next-prime (1+ ,var))) (,ending-value-name ,end)) ((> ,var ,ending-value-name)) ,@body)))
こんな風に書くとちゃんとインデントしてくれるみたいなんですが、こういう書き方ってたぶんしないですよね。もしかしたらCommon Lispをよく書く人だとすごくきもく感じたりするんでしょうか。上のよりはましだと思うんですが。
(3/9 5:30)
cl-indent-patches.elというものがあるそうで、これをload-pathが通っているところに放り投げ、.emacsに
(require 'cl-indent-patches)
としたらバッククォート時でもインデントしてくれるようになりました。
こちらを参考にさせていただきました。