2013-07-29 18 views
7

Ho fatto un errore e ho dimenticato di specificare gli argomenti delle parole chiave in defgeneric la prima volta che l'ho compilato. Ora davvero non voglio riavviare SLIME solo per ridefinire questo defgeneric per includere più argomenti. C'è un modo per "indefinirlo" in qualche modo?Ridefinire la funzione generica con una lista lambda diversa

Oh, scusa, non importa, dopo aver rimosso tutti i metodi definiti per quel generico, SBCL ridefinito, quindi va tutto bene ora:

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

per i posteri.

risposta

10

Vedere fmakunbound.

(fmakunbound 'some-generic) 
+0

oh, sì, sarebbe molto più facile. –

0

Un'altra possibilità sarebbe quella di compilare uno o più metodi con gli argomenti aggiuntivi e quindi, dopo l'implementazione Common Lisp "lamentarsi" dei parametri sconosciuti, selezionare il riavvio che aggiorna gli argomenti disponibili nella funzione generica.

+0

Eh, ora sono giunto alla conclusione, lo voglio davvero indietro senza le parole chiave ... questo sembra essere più difficile :) Solo per essere sicuro: le mie uniche opzioni al riavvio, quando definisco metodi incompatibili sono per uscire o interrompere ... non offre di sostituire nulla. –

8

SLIME ha il comando Ctrl-c Ctrl-u indefinire una funzione. Impostare il cursore sul simbolo della funzione e quindi digitare la sequenza.