在使用REPL时,定义函数和宏是非常有用的,特别是如果您尝试为某个东西创建一个宏,然后将其模拟为函数,并且每次都调用该宏。 Common Lisp有可能取消定义吗?Lisp中可能有未定义的宏和函数吗?
9
A
回答
11
是的,你可以使用fmakunbound
这个。
它适用于函数和宏。下面是一个例子REPL会话:
CL-USER> (defun add (n m) (+ n m))
ADD
CL-USER> (add 1 2)
3
CL-USER> (fmakunbound 'add)
ADD
CL-USER> (add 1 2)
; [snip]
; Evaluation aborted on #<UNDEFINED-FUNCTION ADD {C3305F1}>.
注意,这真的是fmak而非fmake。那仍然不时地让我trips trips不安。
+2
在clisp-REPL中,我只键入“(fm”和tabulator,所以我不'不必知道fmak或fmake。 – porky11
9
取消定义宏或函数并不意味着此更改传播通过代码。
如果你有一个宏并想重新定义它作为一个函数,那么你也必须重新编译使用宏的代码。
请注意,如果您编译的代码具有某些优化(内联),则需要重新编译更多代码。即使重新定义的函数也可能没有效果,直到使用的代码也被重新编译为止。
相关问题
- 1. LISP中未定义的函数错误
- 2. Lisp:宏与函数
- 3. “ @”在LISP宏函数
- 4. C++中的宏可以定义宏吗?
- 5. 在原型函数中,'this'可能是未定义的吗?
- 6. 可能未定义的宏:AC_MSG_FAILURE
- 7. 错误:可能未定义的宏:AS_IF
- 8. 可能未定义的宏:AC_SUBST
- 9. 操作可能未定义的宏
- 10. lisp的自定义'+'(总和)函数
- 11. 增量宏定义可能吗?
- 12. 可能-未定义参数PHP函数
- 13. EVAL:Common Lisp中未定义功能
- 14. 定义数据特定的Clojure函数,可能与宏?
- 15. 无法用我的Emacs-Lisp宏定义函数
- 16. Lisp加载错误:调度宏中的未定义字符
- 17. Lisp中的SQLITE用户定义函数
- 18. 是否有可能在lisp中将递归函数重写为宏?
- 19. 定义函数宏
- 20. 如何理解Lisp中宏定义中的参数绑定?
- 21. Autorreconf和“错误:可能未定义的宏:AM_NLS”
- 22. sweet.js宏可以定义其他宏吗?
- 23. 此功能未定义:IF(Emacs Lisp)
- 24. 如何在LISP函数中调用宏?
- 25. 如何在LISP中定义LAMBDA函数?
- 26. 我的LISP函数是一个未绑定的变量吗?
- 27. 可以定义具有goto语句和标签的宏吗?
- 28. AS_IF和AC_MSG_ERROR:错误:可能未定义宏
- 29. 如何将“define”定义为宏,有可能吗?
- 30. 您可以为条件编译定义函数样式宏吗?
另请参阅[如何删除Lisp中的变量/表单?](http://stackoverflow.com/q/21231775/1281433) –