我在各种Lisp(至少Common Lisp和Emacs Lisp)中注意到了很多例子,其中两个或多个函数具有相同的名称,除了尾随数字。例如,Emacs Lisp有eval-last-sexp
和eval-last-sexp-1
。它还有print
和prin1
。这似乎是一种普遍的做法,但人们学习编程的第一件事就是赋予函数独特的描述性名称。这种做法来自哪里?
答案 0 :(得分:2)
大多数时候这个1具有语义含义(通常是“单一”):
macroexpand
和仅展开顶级宏的macroexpand-1
last1
,它返回列表的最后一个元素(因为last
返回最后一个cons单元格)prin1
的情况更复杂,但同时不仅仅是随机添加1:print
,princ
和prin1
(以及{ {1}})。有关详细信息,请参阅Hyperspec。