@chapter Schluesselとは

Schluessel(シュリュッセル)は Java SE 5.0以上のJREで動作することを目的としたR5RS準拠のSchemeのインタプリタです。R5RSの機能以外にもJavaのライブラリをリフレクションを用いて使用する機能や、SchemeのプログラムをJava側から操作する機能も備えています。

SchluesselはScheme言語の標準である"Revised^5 Report on the Algorithmic Language Scheme"(R5RS)に準拠しています。また、Scheme拡張の標準である"Scheme Requests for Implementation"(SRFI)にも対応しています。

Schluesselの主な特徴として以下のことがあげられます。

@table @b
@item 数の自然な活用
Schluesselにより数を自然に活用することができます。Schluesselは以下のオブジェクトを数(代数)の対象として扱うことができます。つまり、Schluesselを"高機能関数電卓"または"簡易数式処理システム"として使用することができます。
@itemize @bullet
@item 整数/有理数
@item 半精度/単精度/倍精度浮動小数
@item 10進浮動小数(Decimal32/Decimal64); 仮数部は正確に10進数を保持します
@item 正確および不正確な複素数
@item 正確および不正確な四元数(クオータニオン)/八元数
@item 行列/数ベクトル
@item 1変数の多項式
@end itemize

@item 豊富なJava資産の活用
SchluesselによりJavaで記述されたライブラリを活用することができます。JavaのインスタンスはScheme変数として束縛することができます。メソッドも簡単に呼び出すことができます。また、Schemeの主要な型とJavaの主要な型は自然に変換されます。

@item マルチバイト文字列
Schluesselはマルチバイト文字列を自然に扱うことができます。文字についてはUnicode拡張領域にも対応しています。文字列は16ビットの文字(Unicodeの基本多言語面)までですが(これでも実用では十分である)、Unicode拡張領域にも対応予定です。

@item グラフィックスの標準サポート
Schluesselはグラフィックスを標準でサポートします。グラフィックスは"Structure and Interpretation of Computer Programs"(SICP)にあるような図形言語により記述されます。

@item GUIアプリケーションの容易な記述
SchluesselはSwingと連携したGUIアプリケーションを容易に記述できます。JavaによるSwingアプリケーションの記述は約束事が多く簡単には記述できませんが、Schluesselを使用すれば1つのソースファイルで記述できます。

@item Appletとの連携
SchluesselはJava Appletを連携できます。Appletに対してSchluesselはBASICのように簡単な言語環境を用意します。
@end table

@section SRFIのサポート

Schluesselでは以下のSRFIが使用可能です。
@itemize @bullet
@item SRFI-0 (Feature-based conditional expansion construct)
@item SRFI-1 (リストライブラリ)
@item SRFI-2 (AND-LET*)
@item SRFI-4 (一様なベクタ)
@item SRFI-6 (文字列ポート)
@item SRFI-8 (receive)
@item SRFI-9 (レコード型)
@item SRFI-10 (Sharp-comma external forms)
@item SRFI-13 (文字列ライブラリ)
@item SRFI-14 (文字セット)
@item SRFI-16 (Syntax for procedures of variable arity)
@item SRFI-17 (一般化されたset!)
@item SRFI-18 (マルチスレッド)
@item SRFI-19 (日付オブジェクト)
@item SRFI-23 (エラーレポート)
@item SRFI-25 (多次元配列)
@item SRFI-28 (文字列のフォーマット)
@item SRFI-30 (ネストされたコメント)
@item SRFI-34 (例外処理)
@item SRFI-38 (共有構造の表現)
@item SRFI-39 (パラメータ)
@item SRFI-41 (ストリーム)
@item SRFI-44 (コレクション)
@item SRFI-47 (配列)
@item SRFI-58 (配列の記法)
@item SRFI-60 (ビットとしての整数)
@item SRFI-62 (S式コメント)
@item SRFI-63 (一様および一様でない配列)
@item SRFI-66 (オクテットベクター)
@item SRFI-67 (比較手続き)
@item SRFI-69 (基本的なハッシュ表)
@item SRFI-94 (型の制限された数値関数)
@item SRFI-98 (環境変数へのアクセス)
@end itemize

