2011-10-06 100 views
2

我注意到在各種Lisp(至少是Common Lisp和Emacs Lisp)中有不少例子,其中兩個或多個函數具有相同的名稱,但尾部數字除外。例如,Emacs Lisp有eval-last-sexpeval-last-sexp-1。它也有printprin1。這似乎是一種普遍的做法,但人們首先學習編程的一件事就是給函數賦予獨特的描述性名稱。這種做法從何而來?爲什麼許多lisps有「foo」,「foo-1」,「foo-2」等函數名?

+5

從六十年代開始。 –

+0

嗯。我想這足夠長了,以至於更多描述性函數名稱所需的額外字節可能實際上是非常重要的? –

+0

當然。另外,這個想法比今天更加「狂野西部」。 –

回答

2

大多數這1具有語義(通常情況下,「單」)的時代:

  • macroexpand,試圖擴展所有的宏的形式,並macroexpand-1一個可擴展只頂級宏
  • 有一個共同的(不規範)實用程序last1,返回一個列表的最後一個元素(如last返回最後一個cons單元)
  • prin1的情況更爲複雜,但也並不只是一個隨機的另外1:有printprincprin1(還有pprint)。有關更多詳細信息,請參見Hyperspec
相關問題