|
純(じゅんりすぷ、)とは、コンピュータ・プログラミング言語 のうち、ごく基本的な要素だけからなる方言の一種。1960年のジョン・マッカーシーの論文「」で示された。基本的な関数とプリミティブのみしかないが、その言語のインタプリタをその言語で記述できるという性質を持っている。なお、論文とほぼ同時期に発表された、最初の の実装である は約90個の組み込み関数があり、純ではない。 ==概要== 純LISPには2種のデータ型「アトム」と「ペア」、及び、関数はそれらを操作する5つの基本的な関数が存在する。 *「ペア」はデータのペアを表現する。要素 A と B からなるペアは (A . B) のように表され、再帰的に連結することで任意のデータ構造を表現できる。便宜上 (A B C) を (A . (B . (C . nil))) というようなリスト的な構造の略記とみなす。*「アトム」はペアではないものである。上記 nil はリスト的な構造の終端を示すアトムである。他に真値Tもアトムである。* 注: ペアのことをリストと言うこともあるが、 nil を「空リスト」と考えると「ペアではないがリストではある」というややこしい点があるため、リストという表現はここでは可能な限り避ける。5つの関数とは、 以上のデータと関数の他に下記の特殊形式など(関数ではない)が必要である。 * cond またはif * quote * lambda * define 以上の道具立てにより、自分自身を解釈実行できるeval(超循環評価器)を理論上構成できることをマッカーシーは示した。これはある意味で、万能チューリングマシンの構成と同様のことを行っており、現代的な見方からは一種の操作的意味論を与えたものとも言える。そのevalをポール・グレアムが 流に書き直したサンプルがある〔( lambda は defun により暗黙のうちに使われている)〕。また、このevalをそのままコンピュータプログラムとして実装すればLispインタプリタになると指摘し実装してみせたのはマッカーシー本人ではなくSteve Russell(:en:Steve Russell)だった、というエピソードがある〔http://www-formal.stanford.edu/jmc/history/lisp/node3.html より「S.R. Russell noticed that eval could serve as an interpreter for LISP, promptly hand coded it, and we now had a programming language with an interpreter.」〕。なお、cons, car, cdr を次のように lambda を使って定義することも不可能ではないので(単純さのための便宜上Schemeで書いている)、 以上で説明したものが「最小」であるわけではないが、前述の5関数はLispで一般に最も多用されるリストの操作において公理のようなものと見ることができるため〔『初めての人のためのLISP [増補改訂版]』p. 55〕、基本関数と呼ばれることがある。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「純LISP」の詳細全文を読む スポンサード リンク
|