......就像包裹一样.
我使用Emacs(也许,它可以提供某种解决方案).
例如(defun the-very-very-long-but-good-name () ...)
,以后在代码中不会有用.但名称Fn-15
或首字母缩写也没用.是否可以在尝试调用函数名称的同时拥有类似于包的别名或访问文档字符串?
换句话说,功能是否可能以某种方式混合自我记录和短名称?
你想要的defalias
.(defalias 'newname 'oldname)
将保留文档,甚至在请求其文档时显示"newname是`oldname'的别名".
来自?On Lisp ??的代码是:
(defmacro alias (new-name prev-name) `(defmacro ,new-name (&rest args) `(,',prev-name ,@args))) ; use: (alias df defun) (defun group (source n) (if (zerop n) (error "zero length")) (labels ((rec (source acc) (let ((rest (nthcdr n source))) (if (consp rest) (rec rest (cons (subseq source 0 n) acc)) (nreverse (cons source acc)))))) (if source (rec source nil) nil))) (defmacro aliasx (&rest names) `(alias ,@(mapcar #'(lambda (pair) `(alias ,@pair)) (group names 2)))) ; use: (aliasx df1 defun ; df2 defun ; df3 defun)
您可以setf
用来将功能分配给另一个功能单元,例如:
(defmacro alias (new-name prev-name) `(setf (symbol-function ,new-name) (symbol-function ,prev-name)))