For Development HEAD DRAFTSearch (procedure/syntax/module):

11.5 srfi.7 - 機能ベースプログラム設定言語

Module: srfi.7

このモジュールは、SRFI-7 で定義されている プログラム設定メタ言語(program フォーム)を提供します。

Gauche は srfi.7 モジュールを autoload するので、(use srfi.7) と 明示的に書く必要はありません。

program フォームは Scheme の式である必要がないことに注意してください。 SRFI-7 では、この programフォームを処理して Scheme プログラムを 生成してから、それを別の方法で実行するような実装を許しています。

Gauche program フォームをマクロとして実装しているので、 フォーム自体を直接、評価することができます。とはいえ、program フォームと他のフォームを一つのファイル中で混在させたり、program フォームの返り値を期待するのは、よいことではありません。

programフォームの典型的な使い方は、program フォームのみを 含む単一のファイルを用意することです。(programフォーム中で files 節(後述)を用いて他のファイルをロードすることが可能です。) このようなプログラムファイルを Gauche で実行するには、単にそれを ロードするだけです。

Configuration Language: program program-clause program-clause2 …

[SRFI-7]{srfi.7} これは Scheme プログラムを構成する設定言語で、機能の利用可能性に基づいて います。

Scheme のプログラムは、この programフォームから構築されます。 Gauche は構築された Scheme のプログラムをそのまま実行します。

program-clause は以下の "Program Clause" のどれか一つである 必要があります。

Program Clause: requires feature-id feature-id2 …

[SRFI-7] feature-id は SRFI-0 のものと同じです (see 機能条件式)。 あとに続くコードが feature-id を必要とすることを教えます。

Gauche ではサポートされていない feature-id が与えられた場合には、 エラーシグナルが発生します。

Program Clause: files filename …

[SRFI-7] プログラムに filenameの内容を挿入します。Gauche では 単に、現在のモジュール中への filename のロードをひきおこします。

Program Clause: code scheme-expression …

[SRFI-7] scheme-expression がプログラムに挿入されます。

Program Clause: feature-cond clause clause2 …

[SRFI-7] clause は以下のようなフォームです。

(requirement program-clause program-clause2 ...)

ここでは、requirement は以下のもののどれかひとつでなければなりません。

  • feature-id
  • (and requirement …)
  • (or requirement …)
  • (not requirement)

最後の clauserequirementelse になるでしょう。

Gauche はそれぞれの requirement をひとつずつチェックし、 満された requirement が見つかると、そのclause中の program-clause をプログラムに挿入します。



For Development HEAD DRAFTSearch (procedure/syntax/module):
DRAFT