COMMON LISP JP > Archives > 2011/03/10

2011/03/10 02:53:54 UTCmaru
#
FYI. Modern Common Lisp http://modern-cl.blogspot.com/
2011/03/10 08:15:57 UTCg000001
#
大域変数の扱いということならば、defvarをつかうというのは周知のことかなあとは思いますが、処理となるとどうなんでしょうね。定石になる程良くやることでもない気もちょっとします…
#
自分だったら、一回しか読まないファイルを別ファイルにするとか、(eval-once-only (:load-toplevel) ...)とか適当なマクロを書くとか、するかもしれないと思いました
2011/03/10 08:18:02 UTCPocket
#
なるほど、ありがとうございます。
#
独自の名前空間をつくってそこにユニークなキーを登録するというのも、手かなともおもいました。
2011/03/10 08:19:04 UTCg000001
#
何度もロードすることに起因する問題ということならば、視点を変えてみると他に回避策がなにかあるような気もしますね
2011/03/10 08:19:48 UTCPocket
#
hunchentootで*dispatch-table*にhandlerをpushするのですが、コードをloadするたびにpushされるという...
2011/03/10 08:19:57 UTCg000001
#
開発中に一旦処理系を全部落してロードしなおして動作確認する、というのは良くある気がします
#
なるほど
2011/03/10 08:26:11 UTCg000001
#
viで開発してて全部ロードしなおすから、とかでしょうか
2011/03/10 08:29:09 UTCPocket
#
です。書いてloadしてってかんじです。
#
SLIMEだと関数ごとに再定義できるので、そういう問題はおこりませんね。
2011/03/10 08:48:58 UTCg000001
#
(eval-when (:execute :compile-toplevel) (push ...))も考えましたが、いまいちですよねー
2011/03/10 14:03:36 UTCquek
#
私は hunchentoot の場合、次のようにしてました。
#
(defvar *dispatch*
  (hunchentoot:create-prefix-dispatcher *url-prefix* 'dispatch))
(pushnew *dispatch* hunchentoot:*dispatch-table*)
#
無駄な defvar が嫌な感じですが。。。