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

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



こんにちは。花井です。

新規パッケージ内で、lisp パッケージで既に用意された関数の
別バージョンを作ろうとしています。
# lisp パッケージの定義はそのままで、別パッケージ内に同名
# 関数を定義します。
で、

(shadow 'make-vector)
(defun make-vector (LENGTH INIT)
  (lisp::make-vector LENGTH :initial-element INIT))

とすることでなんとか目的を果せるようにはなったのですが、
いちいち (shadow ..)とやるよりは、ということで簡単なマク
ロを作ってみました。が、どーも結果が芳しくないのです。(--;

(defpackage "test")
(in-package "test")

(defmacro shadowing-defun (name (&rest lambda-list) &body body)
  `(shadow ',name)
  `(defun ,name ,lambda-list ,@body))

(shadowing-defun make-vector (LENGTH INIT)
  (lisp::make-vector LENGTH :initial-element INIT))

これで (eval-buffer) をすると、あろうことか lisp パッケー
ジの定義を上書きしまいます。
どこらへんがおかしいのでしょう?

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 @客先 (hanai@xxxxxxxxxxxxxxxxxxxx)
 @自宅 (honey@xxxxxxxxx)

  花井 達
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

Index Home