为什么许多lisps有像“foo”,“foo-1”,“foo-2”等功能名称?

时间:2011-10-06 03:45:13

标签: function lisp naming-conventions elisp

我在各种Lisp(至少Common Lisp和Emacs Lisp)中注意到了很多例子,其中两个或多个函数具有相同的名称,除了尾随数字。例如,Emacs Lisp有eval-last-sexpeval-last-sexp-1。它还有printprin1。这似乎是一种普遍的做法,但人们学习编程的第一件事就是赋予函数独特的描述性名称。这种做法来自哪里?

1 个答案:

答案 0 :(得分:2)

大多数时候这个1具有语义含义(通常是“单一”):

  • 尝试展开表单中的所有宏的macroexpand和仅展开顶级宏的macroexpand-1
  • 有一个公共(非标准化)实用程序last1,它返回列表的最后一个元素(因为last返回最后一个cons单元格)
  • prin1的情况更复杂,但同时不仅仅是随机添加1:printprincprin1(以及{ {1}})。有关详细信息,请参阅Hyperspec