Scheme
Schemeのロゴ | |
パラダイム |
|
---|---|
1975 | |
ガイ・L・スティール・ジュニア、ジェラルド・ジェイ・サスマン | |
R7RS-small / 2013[1] | |
| |
Gauche、Racket、MIT/GNU Scheme、Scheme 48、Guile、Chez Scheme | |
LISP、ALGOL、MDL (プログラミング | |
Clojure、Common Lisp、Dylan、Egison、EuLisp、Haskell、Hop、JavaScript、Julia、Lua、MultiLisp、Python、R、Racket、Ruby、Rust[2]、S、Scala、T | |
ウェブサイト |
www |
scm、ss |
Scheme(スキーム)はコンピュータ・プログラミング
概要
Schemeは、MIT AIラボにて、ジェラルド・ジェイ・サスマンとガイ・スティール・ジュニアによって1975
lambda
また、プログラムの
歴史
MIT
1960 |
LISP | マッカーシー、 |
1964 |
Meteor | ボブロウ |
1969 |
Convert | ガズマン |
1969 |
Planner | ヒューイット |
1970 |
Muddle | サスマン、ヒューイット、 |
1971 |
Micro-Planner | サスマン、 |
1972 |
Conniver | サスマン、 |
1973 |
Plasma | ヒューイット、 |
1975 |
Schemer | サスマン、スティール |
この
機能
静的 スコープ
マッカーシーが1979
ガイ・スティールは、1962
ただし、1962
FUNARG
継続
call-with-current-continuation
Scheme はcall-with-current-continuation
(call/cc
)と
言語 仕様
Scheme の
なお、2007
2009
2013
仕様 の決定
実装
Scheme の
- Bigloo -
高速 な実行 ファイルを作 るコンパイラ。 - BiwaScheme - JavaScript による
実装 。ブラウザ上 で動作 する。 - Chez Scheme - もと
商用 だったが、現在 はオープンソースの高速 な実装 。 - Chicken -
可 搬性の高 い実用 的 コンパイラ。 - Gauche - インタプリタ。
多言 語 への対応 、STklos を発展 させた(メタ)オブジェクトシステムを持 つ。 - Gambit(
英語 版 ) - Schemeインタプリタ及 びScheme→Cコンパイラ。 - GNU Guile - GNU の
公式 な拡張 用 言語 。Scheme を元 にしている。 - HScheme
- IronScheme
- Jscheme
- JAKLD - Java アプリケーション
組 み込 み用 のLISPドライバ - Kawa - GNUプロジェクトのひとつ。Scheme プログラムを Java
仮想 機械 用 にコンパイル可能 。 - Larceny - IA-32、SPARC の
機械 語 を出力 。IEEE/ANSI、R5RS、ERR5RS, R6RS準拠 。 - LispMe - Palm OS
用 の実装 。無料 。 - MIT Scheme - x86アーキテクチャ
用 の Scheme実装 。無料 。 - Mosh - R6RS
準拠 の高速 なインタプリタFFI、ソケットなどの拡張 も。 - Ocs
- PocketScheme - Windows CE
用 の実装 。 - Racket -
旧称 PLT Scheme。教育 用 の豪華 な開発 環境 、柔軟 なシステムで広 く使 われる。 - QScheme
- rhizome/pi
- Scheme48
- SECDR-Scheme - Lispkit Lisp
拡張 による(並列 )Scheme。 - SigScheme - アプリケーション
組 み込 みを目的 としたR5RS準拠 の実装 。uimで使用 されている。 - SISC - Second Interpreter of Scheme Code。Java
仮想 機械 上 で動作 するR5RS準拠 の実装 。Java オブジェクトを Scheme上 から利用 することが可能 。 - TinyScheme -
非常 に小 さい実装 。Zaurusなどでも走 る。正規 表現 やソケット通信 もサポート。 - Vx-scheme - VxWorks
用 の実装 。 - Ypsilon - R6RSに
準拠 するリアルタイムアプリケーション向 けの実装 。
SRFI(サーフィ)
Scheme は
なお、Scheme では
応用
Scheme はしばしば
より
Android
出典
ラムダ論文 一覧
Scheme が
1975 |
Scheme: An Interpreter for Extended Lambda Calculus[13][14] |
1976 |
Lambda: The Ultimate Imperative |
1976 |
Lambda: The Ultimate Declarative |
1977 |
Debunking the 'Expensive Procedure Call' Myth, or, Procedure Call Implementations Considered Harmful, or, Lambda: The Ultimate GOTO |
1978 |
The Art of the Interpreter or, the Modularity Complex (Parts Zero, One, and Two) |
1978 |
RABBIT: A Compiler for SCHEME |
1979 |
Design of LISP-based Processors, or SCHEME: A Dielectric LISP, or Finite Memories Considered Harmful, or LAMBDA: The Ultimate Opcode |
1980 |
Compiler Optimization Based on Viewing LAMBDA as RENAME + GOTO |
1980 |
Design of a Lisp-based Processor |
参考 文献
- ガイ・スティール・ジュニア (1996), Scheme
過去 ◇現在 ◇未来 前編 ・後編 - ガイ・スティール・ジュニア (2006), The History of Scheme
- ジェラルド・サスマン、ガイ・スティール・ジュニア (1975), Scheme: An Interpreter for Extended Lambda Calculus
- ジェラルド・サスマン、ガイ・スティール・ジュニア (1976), Lambda: The Ultimate Imperative
- ガイ・スティール・ジュニア (1976), Lambda: The Ultimate Declarative
- ガイ・スティール・ジュニア (1977), Debunking the 'Expensive Procedure Call' Myth, or, Procedure Call Implementations Considered Harmful, or, Lambda: The Ultimate GOTO
- ジェラルド・サスマン、ガイ・スティール・ジュニア (1978), The Art of the Interpreter or, the Modularity Complex (Parts Zero, One, and Two)
- ガイ・スティール・ジュニア (1978), Rabbit: A Compiler for Scheme
- ジェラルド・サスマン、ガイ・スティール・ジュニア (1979), Design of LISP-based Processors, or SCHEME: A Dielectric LISP, or Finite Memories Considered Harmful, or LAMBDA: The Ultimate Opcode
- カール・ヒューイット (1967), PLANNER A Language for Proving Theorem
- ジェラルド・サスマン、テリー・ビノグラード (1970), Micro-Planner Reference Manual
- V・マクダモット、ジェラルド・サスマン (1972), The CONNIVER Reference Manual
- アイリーン・グライフ、カール・ヒューイット (1974), Actor Semantics of PLANNER-73
- ピーター・J・ランディン (1965), A Generalization of Jumps and Labels
- ヘイヨー・シーレッケ (1998), An Introduction to Landin’s “A Generalization of Jumps and Labels”
- ジョン・C・レイノルズ (1972), Denitional Interpreters for Higher-Order Programming Languages
- ジョエル・モーゼス (1970), The Function of FUNCTION in LISP, or Why the FUNARG Problem Should be Called the Environment Problem
和訳
脚注
注釈
- ^
元々 のALGOLには関数 引数 等 が無 いためFUNARG問題 なども無 く、静的 スコープの歴史 としてALGOLをあまり強調 する意味 は無 い。 - ^
英 : closure - ^
英 : lambda calculus - ^
英 : tail-recursion - ^
英 : continuation - ^
英 : message passing - ^
英 : continuation passing style、CPS - ^
継続 渡 し形式 は一連 のλ 論文 において導入 された。ただし、体系 として確立 されてはいないものの、同様 の手法 は「John C. Reynolds (1972), Denitional Interpreters for Higher-Order Programming Languages」にもみられる。 - ^
後 の完全 な Planner の実装 として、エジンバラ大学 の Julian Davies が POP-2 で実装 した Popler がある。 - ^
当初 はCATCH
という名称 であった。 - ^
英 : escape operator
出典
- ^
出典 URL: https://small.r7rs.org/ - ^ “Influences - The Rust Reference”. The Rust Reference. 2023
年 4月 18日 閲覧 。 - ^ “From LISP 1 to LISP 1.5”. www-formal.stanford.edu. 8 April 2024
閲覧 。 - ^ 「Scheme
過去 ◇現在 ◇未来 前編 」『bit』(共立 出版 )Vol. 28, No.4(1996年 4月 号 ) pp. 4~9 - ^ Baker, Henry G. (July 1978). “Shallow binding in Lisp 1.5”. Commun. ACM (New York, NY, USA: Association for Computing Machinery) 21 (7): 565–569. doi:10.1145/359545.359566. ISSN 0001-0782 .
- ^ 1178-1990 (Reaff 2008) IEEE Standard for the Scheme Programming Language. IEEE part number STDPD14209, unanimously reaffirmed at a meeting of the IEEE-SA Standards Board Standards Review Committee (RevCom), March 26, 2008 (item 6.3 on minutes), reaffirmation minutes accessed October 2009. NOTE: this document is only available for purchase from IEEE and is not available online at the time of writing (2009).
- ^ Michael Sperber ほか. “The Revised6 Report on the Algorithmic Language Scheme” (
英語 ). 2009年 2月 2日 閲覧 。 - ^ “Position statement” (
英語 ). 2013年 12月16日 閲覧 。 - ^ “Scheme Working Groups” (
英語 ). 2013年 12月16日 閲覧 。 - ^
川合 史朗 (2002年 10月 ). “Gluing Things Together - Scheme in the Real-time CG Content Production”. 2014年 6月 20日 閲覧 。 - ^
藤田 善勝 . “YPSILON”. 2014年 6月 20日 閲覧 。 - ^ Online version of the Lambda Papers (PDF)
- ^ Sussman, Gerald Jay; Steele, Guy Lewis (1975). Scheme: An Interpreter for Extended Lambda Calculus (Report). Massachusetts Institute of Technology. hdl:1721.1/5794。
- ^ 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 .
関連 項目
- アクターモデル
継続 末尾 再帰 - SRFI
計算 機 プログラムの構造 と解釈 - Scheme を用 いた計算 機 科学 分野 の古典 的 な教科書 。