プログラミング言語Scheme
富山大学理学部数学科
木村 巌<iwao@sci.toyama-u.ac.jp>
最終更新日:2003年8月26日(更新箇所)
Schemeとは
Schemeは、Guy Lewis Steele Jr.とGerald Jay Sussmanによって創始された、静的なスコープを持ち、真に末尾再帰的なプログラミング言語であり、Lispの一方言でもあります.他に例を見ないほど明快かつ簡潔な意味論を持ち、また、表現の仕方がほぼ一意に定まります.広い範囲のプログラミング・パラダイム、例えば命令型、関数型そしてメッセージ交換型、は、Schemeにおいて簡便に表現できます.("Rivesed5 Report on the Algorithmic Language Scheme"序文より).
このページの目的
このページの目的は、Schemeに関する情報を収拾し、それらを広く公開することで、Schemeを愛好するみなさまのお役に立つことです.もしあなたがこのページで公開したい情報をお持ちなら、是非ご連絡下さい.
このページの作成のきっかけは、犬飼大さんのご提案によるものです.同氏に感謝致します.また、コメントを寄せてくださったA. Jafferさんにも感謝致します.
Schemeに関する情報
Schemeの定義
Schemeは、"Revised5 Report on the Algorithmic Language Scheme"によって定義されています.また、 the IEEE P1178 specificationによる標準化もなされています.
犬飼氏訳日本語版.(2000年1月22日更新)
ケント・ディヴィグ(Kent Dybvig)著、村上雅章訳「プログラミング言語SCHEME」ピアソンエデュケーションにもR5RSの邦訳が収められています.同書に収められたR5RSの邦訳がWWWで読めます.
Suzuki Hisaoさんの訳が新山さんのページにあります.
Schemeの実装
様々なSchemeの実装が入手可能です.稼働する環境も、主なUnix環境の他、Microsoft MS-DOS, Windows版、Apple Macintosh版、IBM OS/2, AMIGAやVMSなど多数です.
GoogleのScheme implementationの一覧:
Computers > Programming > Languages > Lisp > Scheme > Implementations.
- [3DScheme] Schemers inc.が開発している3DScheme. Micrsoft Windows上で動くSchemeの実装です.3D solid modelの作成などが出来るそうです.有料ですが、14日間の試用ができます.同社は他に、EdSchemeという実装も販売しています.
- [Bigloo] Bigloo. CやC++など従来からある言語との共存を念頭に置いたSchemeの実装です.Bigloo-libプロジェクトは、Biglooへの追加機能のコレクションです.GTK+, LDAP, MySQL, XML parser他.
- [Chez Scheme] Chez Scheme. incremental native code compilerを備えたScheme処理系.free版のPetite Chez Schemeはhigh-speed threaded interpreterだそうです.
- [Chiken] Chiken is a Scheme-to-C compiler supporting most of the language features as defined in the Revised5 Report on Scheme. (ChikenはR5RSに定義された仕様の殆んどをサポートしたSchemeからCへのコンパイラです.)
- [Dr Scheme] MS Windows, MacOS, X Window systemで動くGUIなscheme開発環境Dr Scheme. 様々なadd-onが用意されています.
- [Gambit] Gambit is a high-performance implementation of Scheme based on an optimizing compiler. (Gambitは最適化コンパイラに基づいた、Schemeのハイパフォーマンスな実装です).
- [Gauche] GaucheはShiro KawaiさんによるR5RS準拠のScheme処理系です.「日常業務の中でのちょっとした処理を行う スクリプトを気軽にSchemeで書きたいなあ、という願望のもとに、 起動が速いこと、システムへのアクセスが組み込まれていること、 最初から多国語対応を考慮していること、 リスト処理ライブラリとして他のC/C++プログラムから簡単にリンク可能であること、などを目標としています」とのことです.Gauche at SourceForge.
- [guile] GNUはGUILE, GNU's Ubiquitous Intelligent Language for ExtensionとしてSchemeの実装を公開しています.他の言語からのトランスレータなども実装される予定だそうです.最新版はGNUのanon CVSから入手できます.
- [Hobbit] 同じくA. JafferさんのHobbit. SchemeからCへのトランスレータです.
- [Kali Scheme] Kali Schemeはクロージャや継続といったものの受け渡しを可能にした、Schemeの分散実行環境です.
- [Kawa] KawaはJavaで書かれたScheme処理系です.
- [KSM] KSMは、C言語で書かれた関数・変数に、Scheme内から容易にアクセス出来るという特徴を持ったSchemeの実装です.Unicode, multi-thread programmingもサポートしています.
- [Larceny] Larceny is a simple and efficient run-time system for Scheme, currently running on the SPARC architecture. (Larcenyは、Schemeの簡潔で効率的なランタイムシステムです.現在SPARCアーキテクチャで稼働します).
- [LispMe] LispMe ver. 3.0は、Schemeのコンパイラと、Palm Pilot PDA上で動くランタイムシステムです.
- MSchemeはJavaによるSchemeの実装です.Java applet版もあります.
- [Javaアプリケーション組み込み用のLispドライバ] Javaアプリケーション組み込み用のLispドライバは、Javaで実装されたSchemeインタプリタ.Javaアプリケーションに組み込むことも、単体で動かすことも可能.
- [MIT scheme] MIT Scheme.
- [MzScheme] MzScheme. Thread, structure, exception, compile units, object systemなどの機能を備えたschemeの実装.PLT packageとして、その他様々な拡張が提供されています.
- [ngscm] emacs likeなエディタngとscmを合体したngscmについて.
- [OpenScheme] OpenScheme. 開発環境やgraphic library, Web application, databaseへの接続など、多機能なSchemeの実装.
- [PocketScheme] Pocket Schemeは、Windows CE (aka Windows-powered) Pocket PC and Handheld PC上に実装されたScheme処理系です.
- [QScheme] QSchemeはCで実装された高速なSchemeインタプリタです.
- [RScheme] RSchemeはモジュール、オブジェクトシステム、安全なマクロ、Cへのトランスレータなどを備えた、Schemeの実装です.
- [Rucheme] RuchemeはRubyによるSchemeの実装です.
- [Scheme 48] バイトコードインタープリタに基づくScheme 48. MLから派生したmodule systemも持つそうです.
- [SCM] A. JafferさんのSCM and SLIB. SCMはSchemeの実装、SLIBは、R5RSに準拠したSchemeで書かれた、可搬性の高いライブラリ集です.SCMとslibのドキュメントの日本語訳が、新山さん(@東工大)によって進められています.tar.gzファイルとPDFファイル.
- [SIOD] SIOD stands for 'Scheme In One Defun'.
- [snooze] 平岡さん(@埼玉大)の、Snooze.xlispstat上で動くSchemeの(subsetの)実装.
- [Stalin] stalin.tar.Z.
- [STk] SchemeとTkを合体させたSTkのホームページ.
- [STklos] STkの後継として開発されているObject指向をサポートしたSchemeの実装STklos.
- [SXM] SXMは、Schemeのコードをバイトコードに翻訳しランタイム上で実行するSchemeの実装です.
- [TScheme] 静的な型付けを持つScheme風の言語TScheme. C/C++などへのトランスレータを持つそうです.
- [Winscheme 48] Scheme48のMicrosoft Windowsへの移植Winscheme 48. Windows CE版もあります.
ユーティリティ
- [BRL] BRL (Beatiful Report Language)は、KAWAとServelet engineを組み合わせて、HTMLへScheme codeを埋め込めるようにしたものです(PHP4やmod_perlに類似).
- [GEmacs] GEmacsは、Emacsにguileを統合したものです.EmacsのLisp処理系をguileに置き換えるのではなく、双方を使えるようにしたものだそうです.
- [guile-gtk] guile-gtk. GNUのSchemeの実装であるguileのGTkバインドです.
- [guilegl] guileglは、guileのOpenGLバインドです.GTkGLAreaを使っています.
- [guile-pg] guile-pgは、guileからフリーのRDBMS PostgreSQL-7.0をアクセス出来るようにするモジュールです.
- [JEmacs] JEmacsは、Kawaの上に実装された、もう一つのEmacsです.Java, Scheme, Emacs Lispの混合で書かれているそうです.
- [JFILTER] 犬養大さんのJFILTER. JIS, EUC, SJISの間で文字コードを相互に変換するschemeプログラムです.
- [LAML] LAMLはLisp Abstracted Markup Languageです.
- [pregexp] pregexpは、D. SitaramさんによってSchemeで書かれた可搬性の高い正規表現ライブラリ.Perlの正規表現をモデルにしているそうです.
- [Stub-Generator] Scheme48をC/C++で拡張する際に便利なStub generatorだそうです.
- [式神UIA] 式神UIA(式神の「あれ」).「あれ」っていうか、「何か」っていうか.
- [uvector, logical, cgitools] Shiro KawaiさんのPractical Schemeでは、uvector, logical, cgitoolsが公開されています.
- [vgrind.ps] Mayer Goldbergさんのvgrind.ps. PostScriptで書かれた、scheme scriptのpretty printerです.
オンラインドキュメント
国内、あるいは日本語で読めるもの
それ以外
- ReadScheme.org. Schemeに関する論文・テクニカルペーパー等を集積しています.Guy SteeleやGerald SussmanのSchemeに関する元論文も!
- Scheme home page. MITのAIラボで公開されているSchemeのホームページ.RRRS-AuthorsはRnRSの著者達が議論する為のMailing listのアーカイヴ.
- A. Jafferさんの(Yet another) Scheme home page.
- Scheme FAQ, part1, part2.
- Scheme Frequently Asked Questons (and answers). 最近活発に更新されています.
- www.schemers.org. イギリスRice大学で公開されている、Schemerの為のサイト.SRFI (Scheme Request For Implementation). RnRSに定義されていないが、必要となることの多い機能について、仕様策定と実装をすすめるproject.
- Internet Scheme Repository. インディアナ大学で公開されている、インターネットでのSchemeリポジトリ.
- CMU Scheme Repository. カーネギーメロン大学で公開されているSchemeリポジトリ.
- The TeachScheme! Projectは、Brown大、Rice大などの研究者らが組織したものです.現代的なプログラミングの授業を出来る教師の育成を目標にしています.処理系にはDr Schemeを用い、テキストのMatthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi, How to design program, MIT Pressは全文が公開されています.
- Common Lisp the Language, 2nd Edition at AI-repository, CMU.
- Dorai Sitaram, Teach Yourself Scheme in Fixnum Days at Rice大学.
FTPサイト
書籍
Scheme関連の書籍(日本語で書かれたもの並びに邦訳).
- H. Abelson, G. J. Sussman with J. Sussman著、和田英一訳、計算機プログラムの構造と解釈 第二版、ピアソンエデュケーション、2000. (ISBN 4-89471-163-X. 下記のAbelson, Sussmann, Sussmannの第2版の邦訳).
- ケント・ディヴィグ(Kent Dybvig)著、村上雅章訳, プログラミング言語SCHEME、ピアソンエデュケーション、2000. (ISBN 4-89471-226-1. 下記のDybvigの邦訳).
- 犬飼大著「入門Scheme」、秀和システム、1999.
- 猪股俊光、益崎真治、Schemeによる記号処理入門、森北出版株式会社、1994.
- 湯浅太一、Scheme入門、岩波書店、1991.
- H. Abelson, G. J. Sussman with J. Sussman著、元吉文男訳、プログラムの構造と実行、マグロウヒル、1989(下記のAbelson, Sussmann, Sussmannの第1版の訳.絶版)
Scheme関連の書籍(上記以外).
- R. Kent Dybvig, The Scheme Programming Language, 2nd Edition, Prentice Hall, Inc., 1996. Schemeの教則本.邦訳は上記村上訳.
- H. Abelson, G. J. Sussman with J. Sussman, Structure and Implementation of Computer Programs (2nd ed.), MIT press, 1996. Schemeを取り上げた著名な教科書.全文が公開されています.
- Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi, How to design program, MIT Press.
その他
この文書の著作権は木村巌<iwao@sci.toyama-u.ac.jp>が保持します.(木村のホームページへ戻る)
Copyright Iwao KIMURA all right reserved. 1999--2000