Scheme/R6RS/翻訳/8.トップレベルプログラム


Top / Scheme / R6RS / 翻訳 / 8.トップレベルプログラム

これは何か?

R6RS http://www.r6rs.org/ の必要な箇所をひげぽんが翻訳したものです。
誤訳の指摘などはコメントにお願いします。
→現在この翻訳はR6RS:翻訳:R6RS:Top-level programsに寄贈しそこでブラッシュアップされています。

8.トップレベルプログラム

トップレベルプログラムは Scheme プログラムを定義・実行するエントリポイントを定める。
トップレベルプログラムはインポートすべきライブラリと実行すべきコードを定める。
直接インポートされたり、transitive closure を経由してインポートされたライブラリを経てトップレベルプログラムは完全な Scheme プログラムを定義する。

8.1. トップレベルプログラム構文

トップレベルプログラムは以下のようなフォーム(form)を持つテキスト断片の集まりである。典型的にはファイルである。

<import form> <top-level body>

<import form>は以下のようなフォーム

(import <import spec> . . . )

<top-level body>は以下のようなフォーム

<top-level body form> . . .

<top-level body form> は <definition> もしくは<expression>である。
<import form> はライブラリの import 節 と全く同じで(7.1を見よ)、インポートするライブラリを指定する。
<top-level body> は定義と式がどのような順序で並んでも良い事を除けば <library body>(7.1を見よ)と同じである。
したがって <top-level body form> によって定められる構文はマクロ展開の結果を参照する。

一番最初の式よりも前にある top-level body の中で (rnrs base (6)) ライブラリの begin、let-syntax もしくは letrec-syntax を使った場合、それらは body の中に挿入される。(11.4.7を見よ)
begin、let-syntax、letrec-syntax にラップされた部分式を含むいくつかまたは全ての body は構文抽象(syntactic abstraction) によって定められる。(9.2を見よ)

8.2. トップレベルプログラム意味論

トップレベルプログラムはプログラムがライブラリと同じようなものだとして扱われ実行され、定義と式が評価される。
top-level body とは大まかに言えば library body への単純な変換である。
つまり定義の前に現れたどの <expression> もダミーの定義

(define <variable> (begin <expression> <unspecified>))

に変換される。
このとき <variable> は未使用の識別子であり <unspecified> は副作用がなしに不定の値を返す式である。

(body を同時に展開しなければフォームが定義なのか式なのかを区別することは一般的に難しい。そのため実際の変換はいくらか複雑になる。10章を見よ)
プラットフォームが対応していればトップレベルプログラムは command-line 手続きを使用しコマンドラインにアクセスすることが出来る。
(ライブラリセクション10を見よ)

コメント

コメントはありません。 コメント/Scheme/R6RS/翻訳/8.トップレベルプログラム?

お名前:

MENU

now: 2

リンク


最新の20件
2019-07-30 2019-06-20 2019-06-19 2019-03-24 2019-02-26 2018-10-07 2018-09-20 2017-09-29 2017-01-10 2016-12-11 2016-10-04 2016-08-14 2016-05-29 2015-12-28 2013-02-25 2013-02-21 2013-02-20
最新の20件
2010-02-01 2010-01-31 2010-01-30 2010-01-29 2010-01-16

Counter: 2939, today: 1, yesterday: 1

リロード   新規 編集 凍結 差分 添付 複製 改名   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS

Last-modified: 2008-03-28 (金) 15:48:00 (4159d);  Modified by mona
PukiWiki 1.4.6 Copyright © 2001-2005 PukiWiki Developers Team. License is GPL.
Based on "PukiWiki" 1.3 by yu-ji
Powered by PHP 5.2.17
HTML convert time to 0.037 sec.