defun の内部実行方式が、AutoCAD 2000 で変更されました。
旧バージョンの AutoCAD からのアップグレード ユーザの大多数は、この変更を意識する必要はありません。次のコードで示すように、この変更は、たとえばある関数を別の関数に追加することによって defun 定義をリスト構造として処理した AutoLISP のコードにのみ影響します。
(append s::startup (cdr mystartup))
このような状況では、defun-q を使用して関数を定義します。defun 関数をリストとして使用しようとすると、エラーが起こります。次の例は、エラーを示しています。
(defun foo (x) 4) foo (append foo '(3 4)) ; error: Invalid attempt to access a compiled function definition. You may want to define it using defun-q: #<SUBR @024bda3c FOO>
このエラー メッセージは、defun の代わりに defun-q を使用できることを知らせています。defun-q 関数は、旧バージョンとの下位互換性を保持するためにのみ提供されているため、他の目的には使用しないでください。