lösen kann Ihre Frage zu beantworten:
(defconstant +old-plus+ (fdefinition '+))
(defun + (&rest args) (apply +old-plus+ args))
Beachten Sie, wenn Sie die Bewertung dieses wieder (zB durch Neuladen die Datei, in der dieser Code enthalten ist), haben Sie möglicherweise ein Problem: +old-plus+
möglicherweise in Ihrem neuen +
(oder Sie erhalten möglicherweise eine Fehlermeldung oder Sie erhalten möglicherweise eine Warnung) im Stillen neu definiert und Sie verlieren die ursprüngliche +
Definition.
Daher scheint es, dass ein besserer Ansatz ein neues Paket zu erstellen wäre, wo alle Symbole von CL
Ausnahme +
importiert werden, das beschattet wird, und verwenden Sie dann das Paket statt CL
(ungetestet):
(rename-package "COMMON-LISP" "COMMON-LISP-ORIGINAL")
(make-package "COMMON-LISP")
(use-package "COMMON-LISP-ORIGINAL" "COMMON-LISP")
(shadow "+" "COMMON-LISP")
(do-external-symbols (s "COMMON-LISP-ORIGINAL")
(export (find-symbol (symbol-name s)) "COMMON-LISP"))
(defun common-lisp::+ (&rest args) (apply #'common-lisp-original:+ args))
Jetzt sollten Sie in der Lage sein, den Code zu verarbeiten.
Beachten Sie, dass Sie den obigen Code nicht zweimal laden sollten, weil "Konsequenzen sind nicht definiert", wenn Sie rename-package
zu einem vorhandenen "COMMON-LISP-ORIGINAL"
.