LISP
LISPのロゴ | |
パラダイム |
|
---|---|
1960 | |
ジョン・マッカーシー | |
スティーブ・ラッセル、ティモシー・P・ハート、マイク・レビン | |
| |
Arc、AutoLISP、Clojure、Common Lisp、Emacs Lisp、EuLisp、Franz Lisp、Hy、Interlisp、ISLISP、Le Lisp、LFE、Maclisp、MDL、newLISP、NIL、PicoLisp、 Portable Standard Lisp、Racket、Scheme、SKILL、Spice Lisp、T、XLISP、Lisp Machine Lisp | |
Information Processing Language | |
CLIPS、CLU、COWSEL、Dylan、Falcon、 Forth、Haskell、Io、Ioke、JavaScript、 Julia、LOGO、Lua、Mathematica、MDL、 ML、Nu、OPS5、Perl、POP-2、POP-11、Python、R、Rebol、RPL、Ruby、Smalltalk、Tcl |
LISP(リスプ)は、
1958
これまでに
LISPの
コードとデータのf
は、(f arg1 arg2 arg3)
として
LISPの歴史
[LISPは1958
meta-circular evaluator は、あるeval
を
LISPはcar
[cdr
[
1960
その
また、1968
LISPは
1975
1980
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
LISPの
LISPでのリストは
(1 2 "foo")
は1
, 2
, "foo"
の()
はnil
とも
評価
[ここでは Lisp の
CL-USER> (1 2 "foo")
; in: 1 2
; (1 2 "foo")
;
; caught ERROR:
; illegal function call
これは、(1 2 "foo")
は'(1 2 "foo")
と
すべてのlist
はその
(list 1 2 "foo")
は'(1 2 "foo")
を
(1 2 "foo")
; 1 という関数 名 は存在 しない
という
もし
(list 1 2 (list 3 4))
はリスト(1 2 (3 4))
に
(+ 1 2 3 4)
は10に
if
は3つのnil
nil
のことである。したがって
(if (evenp 5)
(list 1 2 "foo")
(list 3 4 "bar"))
は(3 4 "bar")
にevenp
は、その(evenp 5)
をif
は、その(list 3 4 "bar")
を
lambda
によって
(lambda (x y) (+ x y))
のようにして、(
をLISPで
defun
でdefun
の
純 LISP
[1980nil
とt
、などがあれば
関数 car
cdr
cons
eq
atom
特殊 形式 cond
quote
define
(label)
プログラム例
[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))))
LOOP
を
(defun factorial (n)
(loop for i from 1 to n
for fac = 1 then (* fac i)
finally (return fac)))
LOOP
はマクロであり、
(defun reverse (l &optional acc)
(if (atom l)
acc
(reverse (cdr l) (cons (car l) acc))))
オブジェクト指向 システム
[CLOSは
系統 と変種
[- AutoLISP/Visual LISP - AutoCAD
製品 のカスタマイズ用 の言語 。 - Cambridge LISP -
当初 、IBMのメインフレーム上 で実装 され、メタコムコによってAmiga用 として発表 された。 - Clojure - Java
仮想 マシン上 で動作 するLISP。マルチスレッドプログラムの開発 を容易 化 する汎用 言語 。 - Common Lisp -
主 にZetaLISPとFranz Lispの子孫 であり、InterLISPの機能 も導入 された。
- ELisp -
古 いLISP実装 のひとつ。 Emacs Lispとは別 。 - Emacs Lisp - GNU Emacsエディタの
拡張 言語 。 - Franz LISP -
元 はバークレイのプロジェクトである。後 にFranz, Incに移行 。
- InterLisp - BBN
社 で開発 され、初期 にはBBN LISPと呼 ばれた。後 に開発 者 グループがゼロックスのパロアルト研究所 に移動 した際 にInterLispと改名 され、ゼロックスのLISPマシンにもInterLisp-Dとして採用 された。強力 な対話 型 開発 ツールが特徴 。より小 さいバージョンである「InterLISP 65」はAtariの6502ベースのコンピュータ用 に発表 された。 - KLISP - 1967
年 に中西 正和 がTOSBAC-3400上 で開発 し、日本 のLISP研究 と教育 に貢献 した。 - LISP I、LISP 1.5 - MITで
開発 されたマッカーシーのオリジナル版 。 - Lispkit LISP -
純粋 な関数 型 言語 としての方言 であり、SECDマシン上 に実装 された。関数 型 言語 のコンセプトの実験 用 テストベッドとして使用 された。
- MACLisp - MITのプロジェクトMAC(AppleのMacintoshとは
無関係 )のために開発 されたLISPの直系 子孫 。 - MockLisp - Gosling Emacs (Unipress Emacs) エディタの
拡張 言語 。リストのないLISP。 - Oak LISP - Schemeベースのオブジェクト
指向 言語 。 - RPL - 「Reverse Polish LISP」(
逆 ポーランド記法 式 LISP)の名 を冠 した言語 。逆 ポーランド記法 ・スタック指向 を採用 するなど、Forthの影響 も大 きい。ヒューレット・パッカード社 製 の関数 電卓 に組 み込 まれることを想定 して開発 された。 - Scheme - ダイナミックスコープではなく
静的 スコープにもとづき再 設計 されたLISP。 - SKILL - ケイデンス・デザイン・システムズ
社 製 の多 くのEDA製品 で使 われる。
- ZetaLisp - LISPマシンのために
使 われた、MACLISPの直系 子孫 。 純 LISP -超 循環 評価 機 を記述 可能 な程度 で、ごく小 さいサブセットに機能 を絞 った方言 。元々 は「最初 の論文 」と呼 ばれている論文 中 で理論 的 なものとして示 されたが、実際 に実装 可能 である。- xyzzy - Microsoft Windowsで
動 くエディタ。マクロ言語 としてxyzzy Lispを実装 している。
脚注
[注釈
[出典
[- ^ a b c “The implementation of LISP”. www-formal.stanford.edu. 7 April 2024
閲覧 。 - ^ a b c d e f g “McCarthy et al. LISP I Programmer's Manual. — Software Preservation Group”. softwarepreservation.org. 7 April 2024
閲覧 。 - ^ 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
閲覧 。 - ^ “SICP:
序文 ”. 2015年 10月 20日 閲覧 。 “Lispはほぼ四半世紀 の間 使 われた長命 者 である.現役 のプログラミング言語 ではFortranだけが先輩 である.” - ^ Paul Graham. “
技術 野郎 の復讐 ”. 2015年 10月 20日 閲覧 。 - ^ “From LISP 1 to LISP 1.5”. www-formal.stanford.edu. 7 April 2024
閲覧 。 - ^ Hart, Timothy P. (1963). MACRO definitions for LISP (Report). Massachusetts Institute of Technology. hdl:1721.1/6111。
- ^ 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。
- ^ 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 .(
要 購読 契約 ) - ^ 『ANSI Common Lisp』ピアソン・エデュケーション、2002
年 9月 1日 、1頁 。ISBN 4-89471-433-7。 - ^ “McCarthy et al. LISP 1.5 Programmer's Manual. — Software Preservation Group”. softwarepreservation.org. 7 April 2024
閲覧 。 - ^ “Berkeley and Bobrow, editors. The Programming Language LISP: Its Operation and Applications. — Software Preservation Group”. softwarepreservation.org. 7 April 2024
閲覧 。 - ^
Peter J Hurley. “The History of TOPS or Life in the Fast ACs”. 2016
年 10月 6日 閲覧 。 - ^ REDUCE: The First Forty Years
関連 項目
[外部 リンク
[ ウィキメディア・コモンズには、LISPに
- Recursive Functions of Symbolic Expressions and their Computation by Machine (Part I) - マッカーシーによる1960
年 の最初 のLISPの論文 。 - ホーム → projects → lisp → Books — Software Preservation Group - 1960
年代 のLISPのマニュアル - Programs with Common Sense - Professor John McCarthy - マッカーシーによる LISP を
考案 する際 の元 となった、「家 に机 がある」を at(desk, home) の様 に論理 式 で情報 を表現 することを提案 した1958年 の論文 。 - History of Lisp - 1979
年 にジョン・マッカーシーが書 いた1960年 前後 の LISP の沿革