kono@ie.u-ryukyu.ac.jp (Shinji KONO) writes:

> そこの原点には「インタプリタ」ってのがあると思うんだけど...

いいえ、完全な誤解だと思います。

動的な patch あてには load があれば良いだけですし、
動的な program 変更には compile と load があれば良い。

もちろんそういった operation を行なうための i/f 、具体的には listener 
が必要ですが、listener と interpreter はまた別物です。

CMUCL には listner がありますが、普通我々が期待するところの 
interpreter は無いです。以下の例参照ください。

% lisp
CMU Common Lisp 18c, running on hinttika.msi.co.jp
Send questions to cmucl-help@cons.org. and bug reports to cmucl-imp@cons.org.
Loaded subsystems:
    Python 1.0, target Intel x86
    CLOS based on PCL version:  September 16 92 PCL (f)
* (defmacro foo (x) `(car ,x))  ; マクロ foo の定義

FOO
* (defun bar (x) (foo x))  ; foo を呼ぶ関数 bar の定義

BAR
* (bar '(1 2 3))

1
* (defmacro foo (x) `(cdr ,x))  ; マクロ foo の再定義

FOO
* (bar '(1 2 3))       ; でも bar から呼ばれる foo は昔のまま

1
* (defun bar (x) (foo x)) ; bar を 再定義あるいは再コンパイルして
                          ; はじめて新たな foo が呼び出される

BAR
* (bar '(1 2 3))

(2 3)
*