Common lisp 使用不同的lambda列表重新定义泛型函数

Common lisp 使用不同的lambda列表重新定义泛型函数,common-lisp,slime,sbcl,Common Lisp,Slime,Sbcl,我犯了一个错误,第一次编译时忘记在defgeneric中指定关键字参数。现在我真的不想重新启动SLIME只是为了重新定义这个defgeneric以包含更多参数。有没有办法“取消定义”它 哦,对不起,没关系,在删除为该泛型定义的所有方法后,SBCL重新定义了它,所以现在一切都好了: (remove-method #'some-generic (find-method #'some-generic '() (list of method types))) 对于后代。另一种可能是使用附加参数编

我犯了一个错误,第一次编译时忘记在
defgeneric
中指定关键字参数。现在我真的不想重新启动SLIME只是为了重新定义这个
defgeneric
以包含更多参数。有没有办法“取消定义”它

哦,对不起,没关系,在删除为该泛型定义的所有方法后,SBCL重新定义了它,所以现在一切都好了:

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

对于后代。

另一种可能是使用附加参数编译一个或多个方法,然后在您的
Common Lisp
实现“抱怨”未知参数后,选择重新启动以更新通用函数中可用的参数。

请参阅


SLIME有命令Ctrl-cctrl-u来取消定义函数。将光标放在函数符号上,然后键入序列。

Heh,现在我已经得出结论,我实际上希望它在没有关键字的情况下返回。。。这似乎更难:)只是为了确保:在重新启动时,当我定义不兼容的方法时,我唯一的选择是退出或中止。。。它不能代替任何东西。哦,是的,那会容易得多。
(fmakunbound 'some-generic)