Common Lisp
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/06/10 07:33 UTC 版)
Common Lisp(コモン・リスプ)は、コンピュータ・プログラミング言語 Lispの標準(の、ひとつ)であり、Lisp方言のひとつでもある。Common Lispの略称はCL[注釈 1]。規格はANSIによる ANSI INCITS 226-1994 (S2018)。仕様を指すこともあれば、実装を指すこともある。いくつかの、フリーソフトウェアの定義に合致したライセンスによりライセンスされている実装や、オープンソースの定義に合致したライセンスによりライセンスされている実装や、プロプライエタリなライセンスによりライセンスされている実装がある。
- ^ ごくまれにclispとも。なおCLISPという実装が実在するので混同回避のためあまり用いられない
- ^ 一方で型nullは、オブジェクトNILを表す型である。
- ^ このようなtypespecは、配列の型arrayのvalid type specifierである。
- ^ 英: value cell
- ^ 英: function cell
- ^ 英: cons
- ^ 英: cons cell
- ^ 英: pair
- ^ 英: export
- ^ 英: instance
- ^ 英: declaration
- ^ 英: docstring
- ^ 英: condition
- ^ 英: class
- ^ 英: metaclass
- ^ 英: binding
- ^ 彼は ジェラルド・J・サスマンとともに Scheme を設計した。
- ^
nil
はまた、空リストをも表現する。 - ^ 最近、インタプリタのサポートも試験的に実装されている。
- ^ CLHS: Type ATOM
- ^ CLiki : Unicode support
- ^ Technical Issues of Separation in Function Cells and Value Cells
- ^ 3.1 Evaluation
- ^ 32.6. Quickstarting delivery with CLISP
- ^ History and Copyright - Steel Bank Common Lisp
- ^ Clozure CL History
- ^ http://trac.clozure.com/openmcl
- ^ http://armedbear.org/abcl.html
- ^ http://www.gnu.org/software/gcl/
- ^ http://www.digitool.com/
- ^ http://jatha.sourceforge.net/
- ^ http://www.cormanlisp.com/
- ^ https://github.com/sharplispers/cormanlisp
- ^ http://www.franz.com/
- ^ http://www.lispworks.com/
- ^ http://www.scieneer.com/
- ^ http://www.stsci.edu/resources/software_hardware/spike/
- ^ http://ic.arc.nasa.gov/projects/remote-agent/
- ^ 「2003 年 1 月、ヤフーは新しいバージョンの、C++ と Perl で書かれたエディタ(訳注: Viawebのシステムのうち、Lispで書かれていた、サイトを構築するシステムの部分)をリリースした。それは『もはやプログラムは Lisp で書かれていない』というよりも『プログラムを C++ に変換するために Lisp インタプリタを書いた』というようなものであった。私の知る限り、すべてのページ生成テンプレートのソースファイルは依然として Lisp コードのままだった(「グリーンスパンの第10法則」を見よ)。」、ポール・グレアム、Beating the Averages
- ^ http://all-things-andy-gavin.com/2011/03/12/making-crash-bandicoot-gool-part-9/
- ^ ページ下部,開発者のコメント http://dwave.wordpress.com/2011/05/20/learning-to-program-the-d-wave-one-software-you-should-install-a-book-you-should-buy/
- ^ http://www.dwavesys.com/careers/senior-software-developer
- ^ http://www.itasoftware.com/about/index.html
- ^ http://www.izware.com/
- ^ http://www.izware.com/mirai/
- ^ http://www.piano.aero/
- ^ http://www.xanalys.com/
- ^ http://www.genworks.com/
- ^ http://www.noteheads.com/
- ^ http://compo.sourceforge.net/
- ^ http://lisa.sourceforge.net/
Common Lisp
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/03/08 10:57 UTC 版)
「多重ディスパッチ」の記事における「Common Lisp」の解説
Common Lispのように多重ディスパッチをする言語では、コードは次のようになる。 (defmethod collide-with ((x asteroid) (y asteroid)) ;; 小惑星が小惑星に衝突する場合を処理 ...) (defmethod collide-with ((x asteroid) (y spaceship)) ;; 小惑星が宇宙船に衝突する場合を処理 ...) (defmethod collide-with ((x spaceship) (y asteroid)) ;; 宇宙船が小惑星に衝突する場合を処理 ...) (defmethod collide-with ((x spaceship) (y spaceship)) ;; 宇宙船が宇宙船に衝突する場合を処理 ...) このように、引数のデータ型を調べるコードを、引数部分に完全に組み込むことができている。 多重ディスパッチがあると、クラスがあって、そこにメソッドが属しているという考え方はあまり意味を持たない。collide-with という名前のメソッドは、引数ごとにそれぞれ2つのクラスと関連付けられている「普通の関数呼び出し」に過ぎなくなる。結果として、メソッドを呼び出す際の特殊な構文を必要としない。
※この「Common Lisp」の解説は、「多重ディスパッチ」の解説の一部です。
「Common Lisp」を含む「多重ディスパッチ」の記事については、「多重ディスパッチ」の概要を参照ください。
Common Lisp
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/11/26 23:59 UTC 版)
「クロージャ」の記事における「Common Lisp」の解説
Common Lispでは、変数束縛を確立するlet、脱出点を確立するblock、Go Toのタグ(ラベル)を確立するtagbodyの三つの要素を基盤とし、これらの三つの組み合わせによって基本的な構文体系が構築されているが、それぞれの構文で確立された要素は、スコープとエクステント(存続期間)という概念によって整理されている。 これら、三つの構文の、変数名、ブロック名、ラベル名は、レキシカルスコープであり、クロージャに閉じ込めることができるが、変数束縛以外は、スコープ外(エクステント外)からアクセスすることはできない。Common Lispでは、これをレキシカルスコープかつ動的エクステントと表現する(変数はレキシカルスコープかつ無限エクステント) blockにより確立された脱出点からは、return-fromによって抜け出す。また、tagbodyによって確立されたタグは、goにより参照される。 (let ((m 3)) (defun a (x) ;; 関数定義は暗黙にblock名として関数名を設定する (* 3 (block b (* 100 (funcall (lambda (y) (block nil (tagbody (cond ((= 0 (mod y m)) (return-from a y)) ;mの倍数にはaから値をそのまま返す(m=3) ((oddp y) (return-from b (* 2 y))) ;奇数には二倍してbから脱出 (T (go exit))) ;どちらでもなければexitへgo toする ;;return-from nilの略記としてreturnが利用可能 exit (return y)))) ;lambda直下のblock nilから脱出 x))))))(a 1);--> 6(a 2);--> 600(let ((m 6)) ;;aの内部で参照するmは定義時のm (a 3));--> 3
※この「Common Lisp」の解説は、「クロージャ」の解説の一部です。
「Common Lisp」を含む「クロージャ」の記事については、「クロージャ」の概要を参照ください。
Common Lisp
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/02/20 18:08 UTC 版)
Common Lispは、型指定子 member を用いる。例えば、 (deftype cardsuit () '(member club diamond heart spade)) ここで定義された cardsuit型 は、シンボルclub、diamond、heart、spadeの集合となる。 (typep 'club 'cardsuit) ;clubは、cardsuit型か?;=> T ;true また、上記の型定義で利用した deftype は、表記を拡張することにも用いる。 (deftype finite-element-set-type (&rest elements) `(member ,@elements)) は、型指定子 member に finite-element-set-type という新しい名前を付ける。これを用いて、 (deftype cardsuit () '(finite-element-set-type club diamond heart spade)) として、前述のcardsuitと同じものを定義することに利用できる。表記上似ていて紛らわしいmember関数との混同を避けることに使えるだろう。なお、CLOSの引数特定子には、型指定子memberに相当するものはないため、メソッドの定義 (defmethod) で同様のことを実現する場合は、メンバー個々をeql特定子を用いて定義する必要があるだろう。
※この「Common Lisp」の解説は、「列挙型」の解説の一部です。
「Common Lisp」を含む「列挙型」の記事については、「列挙型」の概要を参照ください。
「Common Lisp」の例文・使い方・用例・文例
- 博物館の後援者として、Commonwealth Industries社員の皆様は入場料が半額となります。
- 《主に米国で用いられる》 = 《主に英国で用いられる》 the Speaker of the House of Commons 下院議長.
固有名詞の分類
プログラミング言語 | Pure Data MHEG-5 Common Lisp Icon Text Editor and Corrector |
オブジェクト指向言語 | Object Pascal JRuby Common Lisp Sather Ruby |
関数型言語 | LOGO Dylan Common Lisp Haskell Mozartプログラミングシステム |
- Common_Lispのページへのリンク