...就像包裹一样。
我使用 Emacs(也许它可以提供某种解决方案)。
例如(defun the-very-very-long-but-good-name () ...)
在后面的代码中没有用处。但是名称 likeFn-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)))
如果是所有类型导致不希望继续使用长名称,那么是的,emacs 可以提供帮助。退房abbrev-mode
。在这种情况下也深思熟虑的是hippie-expand
.
如果是可读性问题,那就更难了。
如果您的问题是您不记得很长的函数名称,但您记得名称的一部分,这就是“apropos”的用途。在我的 Emacs 中,我将“Ch a”绑定到“hyper-apropos”。您输入要查找的符号的子字符串,它会列出所有匹配项。
我不知道 Emacs,但不会(定义短名称 longnamefunctionblahblah)工作吗?
您可以简单地拥有一个只调用另一个函数的函数。
您可以使用(defmacro ...)
别名函数