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

时间:2013-07-29 10:08:57

标签: common-lisp slime sbcl

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

哦,对不起,没关系,在删除为该通用定义的所有方法之后,SBCL重新定义了它,所以它现在都很好了:

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

为后人。

3 个答案:

答案 0 :(得分:11)

fmakunbound

(fmakunbound 'some-generic)

答案 1 :(得分:9)

SLIME使用命令 Ctrl-c Ctrl-u 来取消定义函数。将光标置于功能符号上,然后键入序列。

答案 2 :(得分:0)

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