新しいクラスを作成するマクロを定義してから、新しく定義されたクラスのインスタンスを作成する定数を定義しました。
(defmacro my-class (name inst)
`(progn
(defclass ,name nil nil)
(defconstant ,inst (make-instance ',name)))))
これはREPLで機能するようです
(my-class x1025 y1025)
しかし、ファイルでコンパイルするとうまくいきません:
There is no class named COMMON-LISP-USER::X1025.
[Condition of type SIMPLE-ERROR]
Restarts:
0: [ABORT] Abort compilation.
1: [*ABORT] Return to SLIME's top level.
2: [REMOVE-FD-HANDLER] Remove #<SB-IMPL::HANDLER INPUT on descriptor 8: #<CLOSURE (LABELS SWANK-BACKEND::RUN :IN SWANK-BACKEND:ADD-FD-HANDLER) {13228535}>>
3: [ABORT] Exit debugger, returning to top level.
Backtrace:
0: (SB-PCL::FIND-CLASS-FROM-CELL X1025 NIL T)
1: ((:METHOD MAKE-INSTANCE (SYMBOL)) X1025) [fast-method]
2: (SB-INT:SIMPLE-EVAL-IN-LEXENV (MAKE-INSTANCE (QUOTE X1025)) #<NULL-LEXENV>)