Common Lisp
維基百科,自由的 encyclopedia
Common Lisp,縮寫為CL(不是組合邏輯的縮寫)是Lisp程式語言的一種方言,由ANSI INCITS 226-1994(R2004)(前身為ANSI X3.226-1994(R1999)),所定義的語言規範標準。Common Lisp HyperSpec是源自於ANSI Common Lisp標準的網頁超連結版本。
編程範型 | 多範式:程序式, 函數式, 物件導向, 元程式設計, 反射式, 泛型 |
---|---|
設計者 | Scott Fahlman(英語:Scott Fahlman), Richard P. Gabriel(英語:Richard P. Gabriel), David A. Moon(英語:David A. Moon), Kent Pitman(英語:Kent Pitman), Guy Steele, Dan Weinreb(英語:Dan Weinreb) |
實作者 | ANSI X3J13(英語:X3J13)委員會 |
釋出時間 | 1984年(40年前)(1984), ANSI Common Lisp:1994年(30年前)(1994) |
目前版本 | |
型態系統 | 動態型別、強型別 |
作業系統 | 跨平台 |
特許條款 | GNU通用公眾特許條款、Artistic License |
副檔名 | .lisp, .lsp, .l, .cl, .fasl |
網站 | common-lisp |
啟發語言 | |
Lisp, Lisp Machine Lisp(英語:Lisp Machine Lisp), Maclisp, Scheme, InterLisp(英語:InterLisp) | |
影響語言 | |
Clojure, Dylan, Emacs Lisp, EuLisp(英語:EuLisp), ISLISP, R, SKILL(英語:SKILL), SubL(英語:SubL), Julia |
CL語言是為標準化和改良Maclisp而開發的後繼者。到20世紀80年代初,幾個工作群組已經在設計MacLisp各種後繼者,例如:Lisp Machine Lisp(又名 ZetaLisp),Spice Lisp,NIL和S-1 Lisp。CL是為了標準化和擴展此前眾多的MacLisp分支而開發,它本身並非具體的實作,而是對語言設立標準的規範。有數個實作符合Common Lisp規範,其中包括自由和開源軟件,以及商業化產品。CL支援了結構化、函數式和物件導向編程等範式。相對於各種嵌入在特定產品中的語言,如Emacs Lisp和AutoLISP,Common Lisp是一種用途廣泛的程式語言。不同於很多早期Lisp,Common Lisp如同Scheme,其中的變數是預設為詞法作用域的。
身為一種動態程式語言,它有助於進化和增量的軟件開發,並將其迭代編譯成高效的執行程式。這種增量開發通常是互動持續地改善,而不需中斷執行中的應用程式。它還支援在後期的分析和優化階段添加可選的型別註記與轉型,使編譯器產生更有效率的代碼。例如在硬件和實作的支援範圍內,fixnum
能儲存一個未封裝整數,允許比大整數或任意精度類型更高效率的運算。同樣地,在每個模組或函數的基礎上可聲明優化,指示編譯器要編譯成哪一類型的安全級別。
CL包含了支援多分派和方法組合的物件系統,縮寫為CLOS,它通常以元物件(Metaobject)協定來實現。
CL藉由標準功能進行擴展,例如Lisp宏(編譯時期程式自身完成的代碼重排(compile-time code rearrangement accomplished by the program itself))和閱讀器宏(賦予用戶自訂的語法以擴充具特殊意義的符號(extension of syntax to give special meaning to characters reserved for users for this purpose))。
CL為Maclisp和約翰·麥卡錫的原創Lisp提供了一些向下相容性。這允許較舊的Lisp軟件移植到Common Lisp之上。