我正在学习defclass
,defmethod
并且defgeneric
,所以我和一个成员打了defclass
电话。savings-account
balance
我创建了一个defun
(如下所示)以开始更改balance的值,但尚未完成。
(defun balance (account)
(slot-value account 'balance))
然后,我决定defgeneric
改用(下)来代替。
(defgeneric balance (account))
但是当我运行时,defgeneric
我得到了这个错误:
BALANCE已经命名了普通函数或宏。
有没有一种方法可以轻松地取消呼叫或取消声明余额,所以我不必重新启动Emacs会话?
任何自重的Lisp都会为您提供错误的重新启动以更改定义。
这里是SLIME和Clozure CL:
The function BALANCE is defined as something other than a generic function.
[Condition of type CCL::SIMPLE-PROGRAM-ERROR]
Restarts:
0: [CONTINUE] Try to remove any global non-generic function or macro definition.
1: [RETRY] Retry SLIME REPL evaluation request.
2: [*ABORT] Return to SLIME's top level.
3: [ABORT-BREAK] Reset this thread
4: [ABORT] Kill this thread
只需CONTINUE
通过在该缓冲区中键入0或选择相应的行并按来选择重新启动return。
除了Xach的答案,您还可以使用SLIME在功能名称和类型上移动文本光标c-c c-u,即调用SLIME-UNDEFINE-FUNCTION
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句