Common Lisp スコープ

Common Lisp

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/04/27 15:44 UTC 版)

スコープ

他のプログラミング言語におけるプログラムと同様に、Common Lisp のプログラムも変数や関数、その他の要素を参照するために名前を用いる。名前が参照するものは、スコープによって決定されている。

名前と、それが参照する実体との関係を束縛(バインディング[注釈 16])と呼ばれている。

マクロ

LISP系言語におけるマクロは、表面上は関数と同じように使われる。しかし、それは評価される式を表すというよりプログラムのソースコードの変形を表現している。

マクロはプログラマーに言語内に新しい構文フォームを作る事を可能とする。たとえば、このマクロは Perl のような言語で馴染みのある until ループのためのフォームを実現する。

(defmacro until (test &body body)
  `(do ()
       (,test)
     ,@body))

;; 利用例
(until (= (random 10) 0) 
  (write-line "Hello"))

;; 定義したuntilのマクロ展開
(macroexpand-1 '(until (= (random 10) 0) 
                 (write-line "Hello")))
 (DO ()
       ((= (RANDOM 10) 0))
     (WRITE-LINE "Hello"))
  T

すべてのマクロは、内に含むソースコードが評価、あるいはコンパイルされるよりも前に必ず展開される。マクロは抽象構文木(S 式)を受けとり、それを変更して返す関数だと考えることができる。これらの関数は、最終的なソースコードを生成するために評価器やコンパイラよりも前に呼び出される。マクロは通常の Common Lisp で記述され、任意の Common Lisp オペレータ(あるいは自作のオペレータ)を使うことができる。 上の例で使用されているバッククォート記法は一般的なコードテンプレートへの代入を単純化するために Common Lisp によって提供されているものである。

Common Lisp Object System

Common Lispオブジェクト指向プログラミング のための道具として、Common Lisp Object SystemCLOS)を備えている。これは、現在利用可能な言語の中で、もっとも強力なオブジェクトシステムの一つである。1984年当初のCommon Lispには含まれていなかったが、後にCommon LispANSI 標準規格の一部となった。C++Java のような静的な言語のオブジェクト指向機能とは根本的に異なった動的オブジェクトシステムである。


  1. ^ ごくまれにclispとも。なおCLISPという実装が実在するので混同回避のためあまり用いられない
  2. ^ 一方で型nullは、オブジェクトNILを表す型である。
  3. ^ このようなtypespecは、配列の型arrayvalid type specifierである。
  4. ^ : value cell
  5. ^ : function cell
  6. ^ : cons
  7. ^ : cons cell
  8. ^ : pair
  9. ^ : export
  10. ^ : instance
  11. ^ : declaration
  12. ^ : docstring
  13. ^ : condition
  14. ^ : class
  15. ^ : metaclass
  16. ^ : binding
  17. ^ 彼は ジェラルド・J・サスマンとともに Scheme を設計した。
  18. ^ nil はまた、空リストをも表現する。
  19. ^ 最近、インタプリタのサポートも試験的に実装されている。
  1. ^ CLHS: Type ATOM
  2. ^ CLiki : Unicode support
  3. ^ Technical Issues of Separation in Function Cells and Value Cells
  4. ^ 3.1 Evaluation
  5. ^ 32.6. Quickstarting delivery with CLISP
  6. ^ History and Copyright - Steel Bank Common Lisp
  7. ^ Clozure CL History
  8. ^ http://trac.clozure.com/openmcl
  9. ^ http://armedbear.org/abcl.html
  10. ^ http://www.gnu.org/software/gcl/
  11. ^ http://www.digitool.com/
  12. ^ http://jatha.sourceforge.net/
  13. ^ http://www.cormanlisp.com/
  14. ^ https://github.com/sharplispers/cormanlisp
  15. ^ http://www.franz.com/
  16. ^ http://www.lispworks.com/
  17. ^ http://www.scieneer.com/
  18. ^ http://www.stsci.edu/resources/software_hardware/spike/
  19. ^ http://ic.arc.nasa.gov/projects/remote-agent/
  20. ^ 「2003 年 1 月、ヤフーは新しいバージョンの、C++ と Perl で書かれたエディタ(訳注: Viawebのシステムのうち、Lispで書かれていた、サイトを構築するシステムの部分)をリリースした。それは『もはやプログラムは Lisp で書かれていない』というよりも『プログラムを C++ に変換するために Lisp インタプリタを書いた』というようなものであった。私の知る限り、すべてのページ生成テンプレートのソースファイルは依然として Lisp コードのままだった(「グリーンスパンの第10法則」を見よ)。」、ポール・グレアムBeating the Averages
  21. ^ http://all-things-andy-gavin.com/2011/03/12/making-crash-bandicoot-gool-part-9/
  22. ^ ページ下部,開発者のコメント http://dwave.wordpress.com/2011/05/20/learning-to-program-the-d-wave-one-software-you-should-install-a-book-you-should-buy/
  23. ^ http://www.dwavesys.com/careers/senior-software-developer
  24. ^ http://www.itasoftware.com/about/index.html
  25. ^ http://www.izware.com/
  26. ^ http://www.izware.com/mirai/
  27. ^ http://www.piano.aero/
  28. ^ http://www.xanalys.com/
  29. ^ http://www.genworks.com/
  30. ^ http://www.noteheads.com/
  31. ^ http://compo.sourceforge.net/
  32. ^ http://lisa.sourceforge.net/






固有名詞の分類


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「Common Lisp」の関連用語

Common Lispのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Common Lispのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのCommon Lisp (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2024 GRAS Group, Inc.RSS