[xyzzy:03614] Re: sub-class でなければ sub-closure というんでしょうか、
- Subject: [xyzzy:03614] Re: sub-class でなければ sub-closure というんでしょうか、
- From: HANAI Tohru <honey@xxxxxxxxx>
- X-mailer: Mozilla 4.7 [en] (Win98; I)
亀井さん、こんにちは。
花井です。
> で、インタプリタではこれでいいんですが、コンパイルする
> とまた状況が変わってくるので、以下のようにすればオッケ
> ーなはずです、たぶん。
>
> (defmacro shadowing-defun (name (&rest lambda-list) &body body)
> (shadow (symbol-name name)) ; これはインタプリタ用
> `(eval-when (:compile-toplevel :load-toplevel :execute)
> (shadow (symbol-name ',name)) ; これはコンパイル後のロード用
> (defun ,(intern (symbol-name name)) ,lambda-list ,@body)))
おっけ〜でしたぁっ。(^v^)
で、なしてそういうコードになるのかが ('o')? だったので、
幾多の実験してみて *.lc 眺めてよーやく分かりました。
いゃぁ、すっげぇ勉強になりました。ありがとうございます。
----
下のコードは、バイトコンパイル後のコードはちと短いけど、
インタプリタ動作時の効率はちと悪いかもしんないもの。(^-^;;
(defmacro shadowing-defun (name (&rest lambda-list) &body body)
(shadow (symbol-name name))
(let ((sym (intern (symbol-name name))))
`(progn
(eval-when (:load-toplevel)
(shadow ,sym))
(defun ,sym ,lambda-list ,@body))))
-+-----------------+-------------------+-
φ(.. ) おべんきょ、おべんきょ...
⌒⌒
花井 達 (honey@xxxxxxxxx)
-+-------------------------------------+-