(Translated by https://www.hiragana.jp/)
LISP - Wikipedia コンテンツにスキップ

LISP

出典しゅってん: フリー百科ひゃっか事典じてん『ウィキペディア(Wikipedia)』
Lispから転送てんそう
LISP
LISP
LISPのロゴ
パラダイム 関数かんすうがたプログラミング手続てつづがたプログラミングメタプログラミング、マルチパラダイムプログラミング、リフレクション ウィキデータを編集
登場とうじょう時期じき 1960ねん (64ねんまえ) (1960)[1][2][3]
設計せっけいしゃ ジョン・マッカーシー
開発かいはつしゃ スティーブ・ラッセル、ティモシー・P・ハート、マイク・レビン
型付かたつ つよ動的どうてき型付かたつ
方言ほうげん ArcAutoLISPClojureCommon LispEmacs LispEuLispFranz LispHyInterlispISLISPLe LispLFEMaclispMDLnewLISPNILPicoLisp
Portable Standard LispRacketSchemeSKILLSpice LispTXLISPLisp Machine Lisp
影響えいきょうけた言語げんご Information Processing Language ウィキデータを編集
影響えいきょうあたえた言語げんご CLIPSCLUCOWSELDylanFalcon
ForthHaskellIoIokeJavaScript
JuliaLOGOLuaMathematicaMDL
MLNuOPS5PerlPOP-2POP-11PythonRRebolRPLRubySmalltalkTcl
テンプレートを表示ひょうじ

LISP(リスプ)は、関数かんすうがたプログラミング言語げんごである。Sしきぜんおけ記法きほうなどが特徴とくちょうである。

1958ねんあきから開発かいはつはじ[1]、1960ねん3がつにLISP Iのマニュアルがかれ[2]、1960ねん4がつ[3]はじめて論文ろんぶん発表はっぴょうされたLISPは、現在げんざいでも広範囲こうはんい使用しようされている高水準こうすいじゅんプログラミング言語げんごなかではFORTRANCOBOLいで3番目ばんめふる[4]世界せかいで3番目ばんめつくられたプログラミング言語げんごという意味いみではく、言語げんご使つかわれなくなったという意味いみ)。

これまでに多数たすう方言ほうげん存在そんざいしてきたが、今日きょうひろ使つかわれているLISP方言ほうげんは、Common LispSchemeClojureなどである。

元々もともとLISPは、アロンゾ・チャーチラムダ計算けいさん表記ひょうきほう影響えいきょうけ、コンピュータプログラムのための実用じつようてきかつ数学すうがくてき表記ひょうきほうとしてつくられた。そして、すぐに人工じんこう知能ちのう研究けんきゅうこのまれるプログラミング言語げんごになった。最初さいしょプログラミング言語げんごとして、LISP計算けいさん科学かがくにて、構造こうぞうガベージコレクション動的どうてき型付かたつ条件じょうけん分岐ぶんき高階たかしな関数かんすう再帰さいきセルフホスティングコンパイラふくおおくのアイディアをひらいた[5]

LISP名前なまえは、「list processor」に由来ゆらいしている。リストLISP主要しゅようデータ構造こうぞうであり、LISPソースコードはそれ自体じたいがリストからできている。その結果けっか、LISPプログラムはソースコードデータとして操作そうさすることができ、プログラマは、マクロ・システムであたらしい構文こうぶんLISPみのあたらしいDSL作成さくせいできる。

コードとデータの互換ごかんせいは、LISPにそのすぐに認識にんしきできる構文こうぶんあたえる。すべてのプログラム・コードはSしきまたはのリストとしてかれる。関数かんすうしまたは構文こうぶん先頭せんとう関数かんすうまたは演算えんざん名前なまえで、そのつづきが引数ひきすうであるリストとしてかれる。具体ぐたいてきには、3つの引数ひきすう関数かんすうfは、(f arg1 arg2 arg3)としてされる。

ふるくから使つかわれているが、FORTRAN同様どうように、現在げんざいLISP初期しょきのものから変化へんかしている。しかし、FORTRANとくらべると変化へんかちいさく、1960ねんのLISP Iの時点じてん大半たいはん機能きのう実装じっそうずみ[2]ガーベジコレクションやquoteでコードのなかにコードをみevalで実行じっこうする仕組しくみも最初さいしょから存在そんざいし、その実装じっそうされたおもなものは静的せいてきスコープ(LISP Iはおやスコープの変数へんすう束縛そくばくがおかしく動的どうてきスコープだった[6])とマクロと継続けいぞくである。また、標準ひょうじゅんライブラリには永続えいぞくデータ構造こうぞう片方向かたほうこうリストしかなかった[2]。マクロは1963ねん実装じっそうされた[7]静的せいてきスコープは研究けんきゅうされつづけ、1975ねんSchemeクロージャ使用しようするかたち完全かんぜん解決かいけつした[8][9]

LISPの歴史れきし

[編集へんしゅう]
ジョン・マッカーシー(うえ)、スティーブ・ラッセル(した)

LISPは1958ねんあきジョン・マッカーシーMITのコミュニケーション科学かがく助教授じょきょうじゅ就任しゅうにん開発かいはつはじまった[1][10]。マッカーシーは1960ねんACM学会がっかいCommunications of the ACMに「Recursive Functions of Symbolic Expressions and Their Computation by Machine, Part I[3]という題名だいめい論文ろんぶん(「パートII」が発表はっぴょうされることはなかった)を発表はっぴょうした。この論文ろんぶんにおける重要じゅうようてんはいくつかあるが、そのひとつは、自分じぶん自身じしんeval できる meta-circular evaluator(en:Meta-circular evaluator)を記述きじゅつできる、ということをしめしたことである 。1955ねんまたは1956ねんから開発かいはつはじまったIPLは、最初さいしょ人工じんこう知能ちのう言語げんごで、リスト処理しょり再帰さいきなどのおおくの概念がいねんをすでにふくんでいたが、そのすぐにそういった分野ぶんやではLISP使つかわれるようになった。

前述ぜんじゅつの meta-circular evaluator はLISP自身じしん実装じっそうされているが、ひとたびLISP以外いがい言語げんご実装じっそうすればそれは実際じっさいLISP解釈かいしゃく実行じっこうできるインタプリタとなる。マッカーシーは自分じぶん論文ろんぶんちゅうにある評価ひょうかたんなる理論りろんじょう存在そんざいで、そのようにしてインタプリタを実装じっそう可能かのうであるとかんがえていなかった。しかし、マッカーシーのもとで大学院生だいがくいんせいであったスティーブ・ラッセル論文ろんぶんんだのち機械きかいでそれを実装じっそうしてみせ、マッカーシーをおどろかせた。そうしてLISPインタプリタがまれた。

meta-circular evaluator は、ある意味いみで、チューリングマシンにおける万能ばんのうチューリングマシン相当そうとうする。(当初とうしょLISPプログラムの表現ひょうげんほうとしていた)「Mしき」を、LISP自身じしんあつかうデータ構造こうぞう変換へんかんした「Sしき」は、万能ばんのうチューリングマシンの入力にゅうりょく(テープの初期しょき状態じょうたい)としてあたえられるチューリングマシンの記述きじゅつ相当そうとうする。マッカーシーはやはり、LISPプログラムのSしきによる表現ひょうげんevalかんがえるための論文ろんぶんなかだけのものとかんがえており、実際じっさいのプログラムをSしきくようになるとはかんがえていなかった。

LISP当初とうしょIBM 704うえ実装じっそうされたが、その計算けいさんのレジスタを構成こうせいする部分ぶぶん名前なまえが、たい分解ぶんかいする関数かんすうcar[注釈ちゅうしゃく 1]cdr[注釈ちゅうしゃく 2]名前なまえ由来ゆらいとなった。爾来じらい、ほとんどのLISP方言ほうげんにおいて、carとcdrはそれぞれlistの最初さいしょ要素ようそと、最初さいしょ要素ようそ以外いがいかえ関数かんすう名前なまえとなっている。

1960ねんにLISP Iがリリースされ[2]、1962ねんにLISP 1.5がリリースされた[11]。1960ねんのLISP Iの時点じてんすでガベージコレクション実装じっそうされている[2]。また、1960ねんのLISP Iの時点じてんから、Mしきで apply[f;x;p] とマニュアルに記載きさいされているものであっても、パンチカードでは f x p と空白くうはく区切くぎりでSしき入力にゅうりょくすることとなっている[2]。1964ねん書籍しょせき The Programming Language LISP: Its Operation and Applications ではすでにMしき表記ひょうきはなくなり現代げんだいおなじく空白くうはく区切くぎりのSしき表記ひょうきされている[12]

その発端ほったんからLISPは、人工じんこう知能ちのう研究けんきゅうのコミュニティ、とくにPDP-10システムのユーザーにはちかしい存在そんざいであった。PDPの計算けいさん設計せっけい目標もくひょうひとつにLISPの実装じっそうがあり、PDP-6は当初とうしょ、1ワード24bitの計算けいさんとして設計せっけいされていたが、LISP 1.5を移植いしょくしやすくするために36bitに変更へんこうされた[13]人工じんこう知能ちのうコミュニティでは、LISPはプログラミング言語げんご実装じっそうよう言語げんごとしてももちいられた。有名ゆうめいなAIシステムSHRDLU実装じっそう言語げんごMicro Plannerは、MACLISP実装じっそうされている。

また、1968ねんLISP実装じっそうされたREDUCE[14]Macsymaひとし数式すうしき処理しょりシステムが登場とうじょうし、需要じゅようたかまるにつれ高速こうそくLISP処理しょりけい需要じゅようたかまり、LISP高速こうそく処理しょりするいわゆるLISPマシン動機どうきひとつとなった。LISPマシンは、タグアーキテクチャや、ハードウェアスタックとうLISPけのハードウェア機構きこうにより、かたのディスパッチや関数かんすう呼出よびだし、ガベージコレクションの高速こうそく実現じつげんした。

LISP実装じっそう容易たやすさゆえに非常ひじょうおおくの方言ほうげんんだ。マクロもちいれば文法ぶんぽう構造こうぞうそれ自体じたい拡張かくちょうできるので、ある意味いみでは利用りようしゃごとに方言ほうげんがあるとさえいってよい。1970年代ねんだいから1980年代ねんだいにかけては、おおきくけてMACLISPけいInterlispけいふたつの主流しゅりゅう存在そんざいし、LISP方言ほうげん影響えいきょうあたえている。

1975ねんLISPベースでプログラミングに必要ひつよう言語げんご機能きのう極限きょくげんまで抽象ちゅうしょうしたScheme開発かいはつされ、こちらも現在げんざい主流しゅりゅうひとつになっている。Schemeで変数へんすうのスコープ問題もんだい完全かんぜん解決かいけつし、クロージャ使用しようする静的せいてきスコープ実装じっそうされた[8][9]。Schemeにて基本きほんてき言語げんご仕様しよう確定かくていする。関数かんすうがた言語げんごのグループではMLが1973ねん開発かいはつされ、これが、Standard MLOcamlHaskellなどへと発展はってんしていく。

1980年代ねんだいと1990年代ねんだいには、たくさんのLISP方言ほうげんひとつの言語げんご統合とうごうしようという努力どりょくがなされた。その結果けっかとして1984ねん設計せっけいされたあたらしい言語げんごCommon Lisp基本きほんてきにそれらの方言ほうげんのスーパーセットであり、それらをえることになった。1994ねんANSICommon Lisp標準ひょうじゅん仕様しようANSI X3.226-1994 American National Standard for Programming Language Common LISP」を出版しゅっぱんした。しかし、このときまでには、全盛期ぜんせいきくらべるとLISP市場いちばちいさくなっていた。

LISP現在げんざいでもひろ使つかわれている年代ねんだいぶつ言語げんごひとつである。

LISP処理しょりけい派生はせい言語げんごのタイムライン

[編集へんしゅう]
LISPけい言語げんごおおまかななが
1960 1965 1970 1975 1980 1985 1990 1995 2000 2005 2010 2015 2020
LISP LISP I, 1.5, 2
Maclisp Maclisp
Interlisp Interlisp
ZetaLisp Lisp Machine Lisp
Scheme Scheme
NIL NIL
Common Lisp Common Lisp
T T
Emacs Lisp Emacs Lisp
AutoLISP AutoLISP
ISLISP ISLISP
EuLisp EuLisp
PicoLisp PicoLisp
Racket Racket
Arc Arc
Clojure Clojure
LFE LFE
Hy Hy

文法ぶんぽう

[編集へんしゅう]

LISPは「しき指向しこう」の言語げんごである。おおくの言語げんごとはちがって、しきぶん区別くべつされず、すべてのコードとデータはしきとしてくだされる。しき評価ひょうかされたとき、それは(またはのリスト)を生成せいせいする。しきしきめる。

マッカーシーの1960ねん論文ろんぶん[3]では、2つのタイプの表現ひょうげん導入どうにゅうされている。内部ないぶのデータ構造こうぞう表現ひょうげんであるSしき記号きごうしきえい: symbolic expressionsexp)と、Sしき引数ひきすうりSしきかえ関数かんすうあらわす、外部がいぶ表現ひょうげんであるMしき(メタしきえい: meta expression)である。マッカーシーは、Sしきはプログラムの処理しょり対象たいしょうのデータの表現ひょうげん使つかい、LISPプログラムの表現ひょうげんにはMしき使つかった。Sしきによるプログラムの表現ひょうげん論文ろんぶんなかのみのものとかんがえていた。しかし、Sしき表現ひょうげんされたプログラムを評価ひょうかするevalが実装じっそうされ、Sしき表現ひょうげんすることでプログラムをプログラムで操作そうさできるという利点りてんがあり、今日きょうではほとんどすべてのLISP言語げんごでMしき使用しようされておらず、プログラムとデータの両方りょうほうにSしき使用しようする。

LISPもちいる Sしき括弧かっこ大量たいりょう使用しようするため、批判ひはんけることもある。「LISP は 『lots of irritating superfluous parentheses』(過剰かじょうでいらいらさせる大量たいりょう括弧かっこ)に由来ゆらいする」というジョークもある。しかし、Sしきによる構文こうぶんLISP能力のうりょくしてもいる。この構文こうぶんきわめて正規せいきされているので、コンピュータによる操作そうさ容易よういおこなえる。

しきへの依存いぞんが、LISPすぐれた柔軟じゅうなんせいあたえている。LISP関数かんすうは、それ自身じしんがリストとしてかれており、データとまったく同様どうようあつかうことができる。LISPのプログラムはLISPプログラムを処理しょりするようにくことができる。これは、メタプログラミングばれる。おおくの LISP方言ほうげんはこの機能きのうマクロシステムで活用かつようしており、言語げんご自身じしん機能きのうをほとんど際限さいげんなく拡張かくちょうすることを可能かのうにしている。

LISPでのリストは空白くうはく括弧かっこ区切くぎられた要素ようそ記述きじゅつされる。たとえば、

(1 2 "foo")

1, 2, "foo"要素ようそとしてつ1つのリストである。これらの暗黙あんもくかたつ。これらは2つの整数せいすうと1つの文字もじれつであるが、そのように宣言せんげんされている必要ひつようはない。そらのリスト()nilともける。

評価ひょうか

[編集へんしゅう]

ここでは Lisp の方言ほうげんひとつである Common Lispれい説明せつめいする。現実げんじつ実装じっそうでは、上記じょうきのリストを直接ちょくせつ処理しょりけい入力にゅうりょくするとエラーがきる。

CL-USER> (1 2 "foo")
; in: 1 2
;     (1 2 "foo")
; 
; caught ERROR:
;   illegal function call

これは、うえ(1 2 "foo")ただしいしきではないからである。処理しょりけいなかうえのリストを表現ひょうげんしたい場合ばあいは、クオート「'」をもちいて'(1 2 "foo")必要ひつようがある。このことを解説かいせつするため、ここでLISPでの評価ひょうかルールについてべる。

すべてのしきぜんおけ記法きほうのリストとしてかれる。リストの最初さいしょ要素ようそフォーム関数かんすう演算えんざん、マクロ、特殊とくしゅフォームのいずれか)の名前なまえである。リストののこりは引数ひきすうである。たとえば、関数かんすうlistはその引数ひきすうをリストとしてかえす。つまりしき

(list 1 2 "foo")

評価ひょうかされてリスト'(1 2 "foo")かえす。このことを念頭ねんとういて、もう一度いちど最初さいしょげたしきかえると、

(1 2 "foo")
; 1 という関数かんすうめい存在そんざいしない

という仕組しくみでによりエラーがかえされたことがわかるだろう。

もし引数ひきすうのどれかがしきであれば、それをふくしき評価ひょうかされるまえにそれが再帰さいきてき評価ひょうかされる。たとえば、

(list 1 2 (list 3 4))

はリスト(1 2 (3 4))評価ひょうかされる。つまり、3番目ばんめ引数ひきすうはリストであり、リストはネストできるのである。

算術さんじゅつ演算えんざん同様どうよう処理しょりされる。しき

(+ 1 2 3 4)

は10に評価ひょうかされる。このしき中置ちゅうち記法きほうでは「」と等価とうかである。

特殊とくしゅ形式けいしきspecial form)は制御せいぎょ構造こうぞうなど、引数ひきすう位置いちにあるものを通常つうじょうのようには評価ひょうかしないような機能きのう提供ていきょうする。たとえば、ifは3つの引数ひきすうをとり、 だいいち引数ひきすうしんならだい引数ひきすうに、にせならだいさん引数ひきすう評価ひょうかされる。ここでしんとはnil以外いがいにせとはnilのことである。したがってしき

(if (evenp 5)
  (list 1 2 "foo")
  (list 3 4 "bar"))

(3 4 "bar")評価ひょうかされる。evenpは、そのだいいち引数ひきすう偶数ぐうすうであるときにtを、 奇数きすうときnilをかえ関数かんすうである。5は奇数きすうなので、だいいち引数ひきすう(evenp 5)評価ひょうかしたifは、そのだいさん引数ひきすう(list 3 4 "bar")かえす。

関数かんすう定義ていぎには、特殊とくしゅ形式けいしきlambdaによって

(lambda (x y) (+ x y))

のようにして、関数かんすう表現ひょうげんする。このれいは、ラムダ計算けいさんにおける (λらむだx y.(x + y))LISP表現ひょうげんしたものである。

特殊とくしゅ形式けいしきdefun関数かんすう定義ていぎすると、関数かんすう名前なまえけて定義ていぎできる。defun引数ひきすう引数ひきすうのリストと、関数かんすうとして評価ひょうかされるしきである。

じゅんLISP

[編集へんしゅう]

1980年代ねんだい、LISPのサブセットの純粋じゅんすい関数かんすうがたであるじゅんLISPと、その処理しょりけいであるLispkit Lispが、関数かんすうがたプログラミングのテストベッドように、SECDマシンうえ開発かいはつされた。その仕様しようとしては、遅延ちえん評価ひょうか評価ひょうか戦略せんりゃくり、レキシカルスコープ採用さいようしている。以下いかの5つの関数かんすう特殊とくしゅ形式けいしきにシンボルのnilt、などがあれば自分じぶん自身じしん解釈かいしゃく実行じっこうできるevalを実装じっそうできる。このことはある意味いみ万能ばんのうチューリングマシン同様どうようのことであるとえる。

  • 関数かんすう
    • car
    • cdr
    • cons
    • eq
    • atom
  • 特殊とくしゅ形式けいしき
    • cond
    • quote
    • define(label)

プログラムれい

[編集へんしゅう]

以下いかにいくつかのLISP (とくCommon Lisp) のコードれいしめす。これらは産業さんぎょうかいにおける典型てんけいてきなコードではないが、コンピュータサイエンスのコースで通常つうじょうおしえられる典型てんけいてきLISPコードである。

LISP構文こうぶんはそれ自身じしん再帰さいきてき定義ていぎ自然しぜん適合てきごうしている。それゆえ、再帰さいきてき定義ていぎされた集合しゅうごう列挙れっきょするというような数学すうがく問題もんだいをシンプルに表現ひょうげんできる。

以下いか関数かんすう引数ひきすうかいじょう評価ひょうかされる。

(defun factorial (n)
  (if (<= n 1)
      1
      (* n (factorial (- n 1)))))

下記かきべつのやりかたであり、末尾まつび再帰さいきになっている。

(defun factorial (n &optional (acc 1))
  (if (<= n 1)
      acc
      (factorial (- n 1) (* acc n))))

再帰さいき対照たいしょうてき概念がいねんである反復はんぷくによる計算けいさんれいとして、Common Lisp代表だいひょうてきかえ構文こうぶんであるLOOP使つかったれいしめす。

(defun factorial (n)
  (loop for i from 1 to n
        for fac = 1 then (* fac i)
        finally (return fac)))

LOOPはマクロであり、最終さいしゅうてきにはプリミティブな構文こうぶんわせに展開てんかいされる。

以下いか関数かんすう引数ひきすうにリストをとり、そのリストの要素ようそ順番じゅんばんぎゃくにしたものに評価ひょうかされる(LISP実際じっさいにはおなじことをおこなうビルトイン関数かんすう普通ふつうっている)。

(defun reverse (l &optional acc)
  (if (atom l)
      acc
      (reverse (cdr l) (cons (car l) acc))))

オブジェクト指向しこうシステム

[編集へんしゅう]

以下いかふく多種たしゅのオブジェクト指向しこうあるいはモジュールがLISPうえに、あるいは併置へいちして、あるいはまれて設置せっちされている。

  • MITによるFlavors
  • Flavors子孫しそんであるCLOS(The Common Lisp Object System)

CLOS多重たじゅう継承けいしょう多重たじゅうディスパッチ(マルチメソッド)の機能きのうち、強力きょうりょくなメソッド結合けつごう(method combination)のシステム(FIXME)をつ。LISPふくめたCommon Lispは、公式こうしき標準ひょうじゅんされた最初さいしょオブジェクト指向しこう言語げんごである。

系統けいとう変種へんしゅ

[編集へんしゅう]
  • AutoLISP/Visual LISP - AutoCAD製品せいひんのカスタマイズよう言語げんご
  • Cambridge LISP - 当初とうしょIBMメインフレームうえ実装じっそうされ、メタコムコによってAmigaようとして発表はっぴょうされた。
  • Clojure - Java仮想かそうマシンうえ動作どうさするLISP。マルチスレッドプログラムの開発かいはつ容易よういする汎用はんよう言語げんご
  • Common Lisp - おもZetaLISPFranz Lisp子孫しそんであり、InterLISP機能きのう導入どうにゅうされた。
  • ELisp -ふるLISP実装じっそうのひとつ。 Emacs Lispとはべつ
  • Emacs Lisp - GNU Emacsエディタ拡張かくちょう言語げんご
  • Franz LISP - もとバークレイのプロジェクトである。のちFranz, Inc移行いこう
  • InterLisp - BBNしゃ開発かいはつされ、初期しょきにはBBN LISPとばれた。のち開発かいはつしゃグループがゼロックスパロアルト研究所けんきゅうじょ移動いどうしたさいにInterLispと改名かいめいされ、ゼロックスのLISPマシンにもInterLisp-Dとして採用さいようされた。強力きょうりょく対話たいわがた開発かいはつツールが特徴とくちょう。よりちいさいバージョンである「InterLISP 65」はAtari6502ベースのコンピュータよう発表はっぴょうされた。
  • KLISP - 1967ねん中西なかにし正和まさかずTOSBAC-3400じょう開発かいはつし、日本にっぽんのLISP研究けんきゅう教育きょういく貢献こうけんした。
  • LISP ILISP 1.5 - MITで開発かいはつされたマッカーシーのオリジナルばん
  • Lispkit LISP - 純粋じゅんすい関数かんすうがた言語げんごとしての方言ほうげんであり、SECDマシンうえ実装じっそうされた。関数かんすうがた言語げんごのコンセプトの実験じっけんようテストベッドとして使用しようされた。
  • ZetaLisp - LISPマシンのために使つかわれた、MACLISP直系ちょっけい子孫しそん
  • じゅんLISP - ちょう循環じゅんかん評価ひょうか記述きじゅつ可能かのう程度ていどで、ごくちいさいサブセットに機能きのうしぼった方言ほうげん元々もともとは「最初さいしょ論文ろんぶん」とばれている論文ろんぶんちゅう理論りろんてきなものとしてしめされたが、実際じっさい実装じっそう可能かのうである。
  • xyzzy - Microsoft Windowsうごくエディタ。マクロ言語げんごとしてxyzzy Lisp実装じっそうしている。

脚注きゃくちゅう

[編集へんしゅう]

注釈ちゅうしゃく

[編集へんしゅう]
  1. ^ えい: content of address part of register
  2. ^ えい: content of decrement part of register

出典しゅってん

[編集へんしゅう]
  1. ^ a b c The implementation of LISP”. www-formal.stanford.edu. 7 April 2024閲覧えつらん
  2. ^ a b c d e f g McCarthy et al. LISP I Programmer's Manual. — Software Preservation Group”. softwarepreservation.org. 7 April 2024閲覧えつらん
  3. ^ a b c d RECURSIVE FUNCTIONS OF SYMBOLIC EXPRESSIONS AND THEIR COMPUTATION BY MACHINE (Part I) (12-May-1998)”. www-formal.stanford.edu. 7 April 2024閲覧えつらん
  4. ^ SICP: 序文じょぶん”. 2015ねん10がつ20日はつか閲覧えつらん。 “Lispはほぼ四半世紀しはんせいきあいだ使つかわれた長命ちょうめいしゃである. 現役げんえきのプログラミング言語げんごではFortranだけが先輩せんぱいである.”
  5. ^ Paul Graham. “技術ぎじゅつ野郎やろう復讐ふくしゅう”. 2015ねん10がつ20日はつか閲覧えつらん
  6. ^ From LISP 1 to LISP 1.5”. www-formal.stanford.edu. 7 April 2024閲覧えつらん
  7. ^ Hart, Timothy P. (1963). MACRO definitions for LISP (Report). Massachusetts Institute of Technology. hdl:1721.1/6111
  8. ^ a b Sussman, Gerald Jay; Steele, Guy Lewis (1975). Scheme: An Interpreter for Extended Lambda Calculus (Report). Massachusetts Institute of Technology. hdl:1721.1/5794
  9. ^ a b Sussman, Gerald Jay; Steele Jr, Guy L (1998). “Scheme: A interpreter for extended lambda calculus”. Higher-Order and Symbolic Computation (Springer) 11 (4): 405–439. doi:10.1023/A:1010035624696. https://doi.org/10.1023/A:1010035624696. (Paid subscription requiredよう購読こうどく契約けいやく)
  10. ^ 『ANSI Common Lisp』ピアソン・エデュケーション、2002ねん9がつ1にち、1ぺーじISBN 4-89471-433-7 
  11. ^ McCarthy et al. LISP 1.5 Programmer's Manual. — Software Preservation Group”. softwarepreservation.org. 7 April 2024閲覧えつらん
  12. ^ Berkeley and Bobrow, editors. The Programming Language LISP: Its Operation and Applications. — Software Preservation Group”. softwarepreservation.org. 7 April 2024閲覧えつらん
  13. ^ Peter J Hurley. “The History of TOPS or Life in the Fast ACs”. 2016ねん10がつ6にち閲覧えつらん
  14. ^ REDUCE: The First Forty Years

関連かんれん項目こうもく

[編集へんしゅう]

外部がいぶリンク

[編集へんしゅう]

ウィキメディア・コモンズには、LISPかんするメディアがあります。