Common lisp 如何删除结构的defmethod

Common lisp 如何删除结构的defmethod,common-lisp,Common Lisp,我有两个毁灭:monster&orc。orc包括monster。通用怪物上有名为monster show&monster hit的通用解除方法。orc有一个专门的怪物命中,但仍然保留了一般的怪物表演。我的问题是,我不小心将orc的专用方法命名为错误的名称(monster show),因此现在当我尝试使用泛型monster show时,它会运行它不应该运行的代码(我编译的错误命名的defmethod),而不是运行泛型方法 有没有办法摆脱Slime+SBCL中的一种专门的解除方法?在spacemac

我有两个毁灭:
monster
&
orc
orc
包括
monster
。通用怪物上有名为
monster show
&
monster hit
的通用解除方法。
orc
有一个专门的
怪物命中
,但仍然保留了一般的
怪物表演
。我的问题是,我不小心将
orc
的专用方法命名为错误的名称(
monster show
),因此现在当我尝试使用泛型
monster show
时,它会运行它不应该运行的代码(我编译的错误命名的defmethod),而不是运行泛型方法


有没有办法摆脱Slime+SBCL中的一种专门的解除方法?

在spacemacs上,使用邪恶模式
:Slime inspect RET#'monster-show
。在
orc

上选择移除方法,下面是我使用粘液检查器的方法:

输入要修改的常规函数:

CL-USER> #'monster-show
#<GENERIC FUNCTION: MONSTER-SHOW>
CL-USER>#“怪物秀”
#
将光标移到该对象上,然后通过键入
C-C-v选项卡来检查该对象

检查员应展示其专业人员确定的功能方法列表。导航到一个并按下按钮以删除/取消绑定该方法。你也可以点击这个


此外,通过对层次结构的描述,使用真正的类而不是结构可能更明智。与类相比,结构不会提供特别大的加速。

如果您没有IDE或类似的,可以使用:


我在评论中添加了M-x路线,然后我将接受您的回答
M-x粘液检查RET#怪物秀
。谢谢
(remove-method #'monster-show
               (find-method #'monster-show
                            ()
                            (list (find-class 'orc))))