Scheme
出典: フリー百科事典『ウィキペディア(Wikipedia)』
Scheme(スキーム)は、ガイ・スティール(Guy Lewis Steele Jr.)とジェラルド・ジェイ・サスマン(Gerald Jay Sussman)によって開発された関数型プログラミング言語であり、LISPの方言の1つ。他のLISP言語と比べてもシンプルで強力であることが特徴である。
Schemeは、実行時のスナップショットを抽象化した継続(コンティニュエーション)、静的スコープ、末尾最適化を言語として保証するなどの機能を持つ。
Schemeが出てくるまでの他のLISP方言では変数束縛が実行履歴を元に決定される動的スコープを採用することが多かったが、Schemeでは変数の意味がコード上のネスティングで定まるという静的スコープを持つ。静的スコープはCommon Lispに採用された。Schemeは、アメリカでは大学でのプログラミング教育に広く使われている。
MITでプログラミング教育に使われている処理系実装MIT Schemeは、多くのプラットフォームで動作する。
サスマンらによる『計算機プログラムの構造と解釈 第二版』(ISBN 489471163X)は、演習や説明にSchemeを使ったコンピュータサイエンスの優れた教科書である。
言語仕様は、文書The Revised5 Report on the Algorithmic Language Scheme(R5RSと呼ばれる)で定められる。LISP系言語はSchemeとCommon Lispを二大潮流とするが、提案された機能を原則全て導入するCommon Lispに対して、メンバーの全員一致を原則とするSchemeという特徴を持っている。
[編集] SRFI
Schemeは言語機能を必要十分の最低限まで単純化することを目指した言語である。そのため仕様書がコンパクトな反面、実用に際して各種のライブラリが乱立し、移植性が問題になっていた。そこで実装間の統一をとるため、コミュニティ内の議論を集約しているのがScheme Requests for Implementationである。SRFIではライブラリ仕様、言語拡張仕様などがインデックス化されており、SRFI準拠の実装系は「xに準拠」といった形で利用者の便宜を図ることができる。
なお、Schemeでは言語機能とライブラリ機能は分けて考えられているため、SRFIとScheme言語仕様のコミュニティは原則分離している。
[編集] 実装
Schemeの仕様書は50ページにも満たないため、かなりの数の実装が存在する。
- Bigloo - 高速な実行ファイルを作るコンパイラ。
- Chez Scheme - 商用の高速な Scheme 実装。
- Chicken Scheme
- Gauche(外部リンク) - スクリプトインタプリタ向け。最初から多言語への対応を考慮している処理系。
- Guile - GNU のオフィシャルな拡張用言語。Schemeをベースにしている。
- Kawa - GNU プロジェクトのひとつ。Scheme プログラムを Java 用にコンパイル可能。
- PLT Scheme - 高機能な IDE を備えた Scheme 環境。多くの教育現場で利用されている。
- MIT Scheme - x86 アーキテクチャ用のフリーな Scheme 実装。
- TinyScheme - 非常に小さい実装。Zaurusなどでも走る。正規表現やソケット通信もサポート。
- PocketScheme(外部リンク) - WindowsCE用のScheme実装。
- Vx-scheme - VxWorks用のScheme実装。
[編集] 外部リンク
- プログラミング言語Scheme
- R5RS
- R5RS日本語版
- R6RS(2006年末現在策定中の新仕様書)
- 独習 Scheme 三週間(オンラインで読める入門書)