[Date Prev] [Date Index] [Date Next]
[Thread Prev] [Thread Index] [Thread Next]

[xyzzy:03614] Re: sub-class でなければ sub-closure というんでしょうか、



亀井さん、こんにちは。
花井です。

> で、インタプリタではこれでいいんですが、コンパイルする
> とまた状況が変わってくるので、以下のようにすればオッケ
> ーなはずです、たぶん。
> 
> (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)
-+-------------------------------------+-

Index Home