14

...パッケージと同じように。

私はEmacsを使用しています(おそらく、何らかの解決策を提供できるでしょう)。

たとえば(defun the-very-very-long-but-good-name () ...)、コードの後半では役に立ちません。しかし、名前のようなものFn-15や最初の文字の省略形も役に立ちません。関数の名前を思い出そうとして、パッケージのようなエイリアスを持つことや、ドキュメント文字列にアクセスすることは可能ですか?

言い換えれば、関数が何らかの形で自己文書化された名前と短い名前を混在させることは可能ですか?

4

8 に答える 8

40

あなたがしたいdefalias(defalias 'newname 'oldname)ドキュメントを保持し、ドキュメントが要求されたときに「newname は `oldname' のエイリアスです」と表示することさえあります。

于 2008-10-10T17:23:04.573 に答える
5

《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)
于 2014-01-12T14:12:08.733 に答える
5

setf関数を別の関数セルに割り当てるために使用できます。次に例を示します。

(defmacro alias (new-name prev-name)
  `(setf (symbol-function ,new-name) (symbol-function ,prev-name))) 
于 2014-04-28T05:12:41.847 に答える
4

長い名前の継続的な使用を望ましくないものにするのがすべてのタイピングである場合、はい、emacsが役立ちます。チェックアウトしてくださいabbrev-mode。また、このコンテキストでよく考えられているのは ですhippie-expand

読みやすさの問題である場合、それはより困難です。

于 2008-10-14T16:49:06.667 に答える
0

私は Emacs を知りませんが、(短い名前、長い名前、機能を定義する) 動作しませんか?

于 2008-10-10T16:27:19.473 に答える
0

問題が非常に長い関数名を思い出せないことであるが、名前の一部を覚えている場合、それが「apropos」の目的です。私の Emacs では、"Ch a" が "hyper-apropos" にバインドされています。探している記号の部分文字列を入力すると、すべての一致が一覧表示されます。

于 2008-10-10T16:23:13.350 に答える
-1

別の関数を呼び出すだけの関数を持つことができます。

于 2008-10-10T16:25:44.407 に答える
-1

(defmacro ...)関数のエイリアスに使用できます

于 2008-10-10T17:15:02.513 に答える