2013-07-29 11 views
7

Ich habe einen Fehler gemacht und vergaß, Schlüsselwort Argumente in defgeneric das erste Mal, dass ich es kompiliert. Jetzt möchte ich SLIME wirklich nicht neu starten, nur um dieses defgeneric neu zu definieren, um mehr Argumente zu enthalten. Gibt es eine Möglichkeit, es irgendwie zu "entschärfen"?Generische Funktion mit verschiedenen Lambda-Liste neu definieren

Oh, sorry, das macht nichts, nachdem alle Methoden für die allgemeine definiert Entfernen SBCL es neu definiert, so dass es ist alles gut jetzt:

(remove-method #'some-generic 
    (find-method #'some-generic '() (list of method types))) 

für die Nachwelt.

Antwort

10

Siehe fmakunbound.

(fmakunbound 'some-generic) 
+0

oh, ja, das wäre viel einfacher. –

0

Eine andere Möglichkeit wäre, eine oder mehrere Methoden mit den zusätzlichen Argumenten zu kompilieren und dann, nachdem Ihre Common Lisp Implementierung sich über die unbekannten Parameter beschwert, wählen Sie den Neustart, der die in der generischen Funktion verfügbaren Argumente aktualisiert.

+0

Heh, jetzt bin ich zum Schluss gekommen, ich will es eigentlich wieder ohne die Schlüsselwörter ... das scheint härter zu sein :) Nur um sicher zu gehen: meine einzigen Optionen beim Neustart, wenn ich inkompatible Methoden definiere Entweder beenden oder abbrechen ... es bietet nichts an, etwas zu ersetzen. –

8

SCHLEIM hat den Befehl Ctrl-c Ctrl-U eine Funktion aufgehoben werden soll. Setzen Sie den Cursor auf das Funktionssymbol und geben Sie die Sequenz ein.