SBCL 64 ビット、1.1.7
パッケージを作成し、パッケージ :CL の小さなシンボルを使用する場合は、次のようなパッケージを作成します。
(defpackage :foo
(:import-from :cl
:defun :defmacro :in-package
:null :car :cdr :cons :if
:eq))
しかし、このパッケージでは、オプションの引数を指定して関数を定義し、オプションの引数を指定せずに呼び出すと、常にエラーが発生します。
(defun test (&optional a))
(test)
invalid number of arguments: 0
[Condition of type SB-INT:SIMPLE-PROGRAM-ERROR]
Restarts:
0: [RETRY] Retry SLIME interactive evaluation request.
1: [*ABORT] Return to SLIME's top level.
2: [REMOVE-FD-HANDLER] Remove #<SB-IMPL::HANDLER INPUT on descriptor 10: #<CLOSURE (COMMON-LISP:LABELS SWANK-BACKEND::RUN :IN SWANK-BACKEND:ADD-FD-HANDLER) {100490B95B}>>
3: [ABORT] Exit debugger, returning to top level.
マクロを定義すると同じエラーが発生しますが、詳細情報が含まれています。
(defmacro test (&rest body))
(test)
error while parsing arguments to DEFMACRO TEST:
invalid number of elements in
()
to satisfy lambda list
(&REST BODY):
exactly 2 expected, but 0 found
[Condition of type SB-KERNEL::ARG-COUNT-ERROR]
:CL からいくつかのシンボルが不足しているためだと思いますが、この問題を解決するにはどうすればよいですか? ありがとう。