[xyzzy:03590] Re: sub-class でなければ sub-closure というんでしょうか、
- Subject: [xyzzy:03590] Re: sub-class でなければ sub-closure というんでしょうか、
- From: Tetsuya Kamei <kamei@xxxxxxxxxxxx>
- X-mailer: Denshin 8 Go V321.2b5
- X-yzzy-version: 0.1.0.110
花井さん、こんにちは。
Wed, 17 Nov 1999 18:29:28 +0900 の
“[xyzzy:03587] sub-class でなければ sub-closure というんでしょうか、”
への返事です.
| どこらへんがおかしいのでしょう?
Load 時の動作は、「S 式をひとつ読む -> 評価する」とい
う流れになります。パッケージは read したときに決まるの
で、評価する時点ではすでに
(shadowing-defun make-vector (LENGTH INIT) ...
は、
(test::shadowing-defun lisp:make-vector (test::LENGTH test::INIT) ...
のように読まれてしまっています。その後で shadow しても
もう遅いってわけですね。
で、どうするかってえと、たとえばこのように自力で
intern してやれば read 時のパッケージは関係なくなりま
す。
(defmacro shadowing-defun (name (&rest lambda-list) &body body)
(let ((new-name (intern (symbol-name name) *test-package*)))
`(progn
(shadow ',new-name)
(defun ,new-name ,lambda-list ,@body))))
--
亀井哲弥(Tetsuya Kamei)
kamei@xxxxxxxxxxxx/JCA00343@xxxxxxxxxxx