Lisp据说可以重新定义其核心功能。
我想定义函数cl:documentation
函数的别名,例如
(doc 'write 'function) === (documentation 'write 'function)
如何在SBCL中完成并永久保留?
答案 0 :(得分:9)
您没有尝试redefine(即更改系统函数documentation
的定义),您希望使用更短的名称定义自己的函数,这将与系统执行相同的操作功能
可以使用fdefinition
:
(setf (fdefinition 'doc) #'documentation)
没有标准的方式,不同的实现可能会有不同的方式,但是,一般来说,有两种常见的方式。
每次启动lisp时,都会重新评估相关代码。
修改后的lisp世界将保存到磁盘。
答案 1 :(得分:4)
尽管@sds已经非常彻底地回答了我只是想补充说实用程序库serapeum有defalias
答案 2 :(得分:1)
我为此使用了一个简单的宏:
(defmacro alias (to fn)
`(setf (fdefinition ',to) #',fn))
e.g。
(alias neg -)
=&gt; #<Compiled-function ... >
(neg 10)
=&gt; -10
其他答案包括如何使此永久性的详细信息。