next up previous contents index
: 目次   目次   索引

TUTSchemeのマニュアル
Version 1.51

京都大学 湯淺研究室

Jul 29, 1998



まえがき




TUTSchemeは,豊橋技術科学大学(Toyohashi University of Technology)にお いて開発されたScheme処理系である.インテル8086およびその上位互換CPUを ベースとしたMS-DOSマシン上で稼働するDOS版と,UNIX ワークステーションで稼働するUNIX版がある.本マニュアルは UNIX版TUTSchemeの言語仕様を記したものである.以下,特に断らない限り UNIX版TUTSchemeを単にTUTSchemeとよぶことにする. TUTSchemeの言語仕様は,IEEEの標準化仕様

IEEE Standard for the Scheme Programming Language (May, 1991)
に準拠し,これに適宜拡張を行った. 主な拡張点は次の通りである.

本処理系は1989年,豊橋技術科学大学情報工学系 湯浅研究室において開発さ れ,その後,改良と拡張を加えて現在にいたっている.開発は,湯浅太一,山 本幹雄,大橋泰之(メイテック),倉林則之,小宮常康,牛嶋悟,伏見明浩,渡 邊誠也の8人が行った. 本マニュアルは湯浅,小前晋,大羽徹が作成したDOS版用マニュアルを,UNIX 版用に改訂したものである.改訂は湯浅,小宮,牛嶋,渡邊が担当した.(以 上敬称略)

本マニュアルはTUTSchemeの言語仕様を記したものであり, Schemeの入門書ではない. 初心者は次の入門書を参照することが望ましい.

湯浅太一著「Scheme入門」岩波書店,1991
また,DOS版TUTSchemeとそのマニュアルは,
湯浅太一著「Scheme」岩波ソフトウェアライブラリ,岩波書店,1991
として入手可能である.

本マニュアルの関数等の記述項目には,次のいずれかの印を与えた.

【特殊フォーム】 の項には,最初にその一般的な構文を,

(《特殊フォーム名》$\cdots$)

という形で与えた. 構文の記述には,次の記法を用いた. まず,

《A》
はAそのものが式に現れることを意味する. 例えば,

(quote《データ》)

quoteという記号と任意のデータからなるリストを表す.

A$\cdots$A
はAの並びを表す. Aが$1$つもなくてもかまわない. 例えば,

(begin《式$_1$$\cdots$《式$_n$》)

では, beginに続けて式(フォーム)がいくつか現れることを意味し,

(begin)
(begin《式》)
(begin《式$_1$》《式$_2$》)
(begin《式$_1$》《式$_2$》《式$_3$》)

などの形はこの構文に合致する.また,

(cond《節$_1$$\cdots$《節$_n$》)

condに続けて``節''がいくつか現れることを意味する.

[A]
はAが省略可能であることを表す.例えば,

(if《条件》《式$_1$》[《式$_2$》])

は 《式$_2$》 が省略可能であることを示し,

(if《条件》《式$_1$》)
(if《条件》《式$_1$》《式$_2$》)

のいずれかの形がこの構文に合致する.

【関数】 の項には,最初にその関数の受け取る引数を

(《関数名》$\cdots$)

という形で与えた. 引数の記述にはλリストの形を用い,各引数に対応するものを

〈A〉
と示し,Aによってその引数のおおよそのデータ型がわかるようにした.例えば,

(sqrt〈数値〉)

は数値データを$1$つ引数とすることを意味する. 必須パラメータ(required parameter)は, それらを順に並べて示した.例えば,

(modulo〈整数$_1$〉〈整数$_2$〉)

$2$つの整数を引数とすることを意味し,

(vector-ref〈ベクタ〉〈インデックス〉)

は,ベクタとインデックス(整数)をそれぞれ第$1$引数,第$2$引数として 受け取ることを意味する.省略可能な引数は

[〈A〉]
と示し,オプショナル・パラメータのデフォルト値は説明文中にあげておいた. 残余(rest)パラメータは,それがバインドされるリストを

〈A$_1$$\cdots$〈A$_n$
という形で示した.例えば,

(+〈数値$_1$$\cdots$〈数値$_n$〉)

は 〈数値$_1$$\sim$ 〈数値$_n$〉 からなるリストが 残余パラメータにバインドされることを意味する. つまり,この関数が任意個の数値データを受け取ることを意味する.また,

(-〈数値$_0$〉〈数値$_1$$\cdots$〈数値$_n$〉)

では, 〈数値$_0$〉 は必須パラメータで, 〈数値$_1$$\sim$ 〈数値$_n$〉 が残余パラメータを構成する. つまりこの関数は$1$個以上の数値データを受け取ることを意味する.

説明文中の例には,対話形式の例と,フォームとその値を組にした形式の例がある. 後者については,フォームと値を``$\Rightarrow$''で区切った.例えば,

(/ 6 2) $\Rightarrow$ 3
(/ 6 2)の値が 3であることを意味する. また,フォームの評価がエラーをおこす場合は,「エラー」と記した.
(cons 1 2 3) $\Rightarrow$ エラー
対話形式の例については, トップ・レベルのプロンプトを``>''で示し, トップ・レベル・フォームとその値を行をかえて表示した.
> (define x 1)
x
(define x 1)
という式の値が記号 xであることを意味している.




next up previous contents index
: 目次   目次   索引
Tsuneyasu KOMIYA 平成14年2月22日