For Gauche 0.9.5


Previous: , Up: はじめに   [Contents][Index]

1.2 表記について


Next: , Previous: , Up: 表記について   [Contents][Index]

1.2.1 項目の形式

このマニュアルでは、各項目は次のようなフォーマットで表記されています。

カテゴリ: foo arg1 arg2

[spec] fooの説明

カテゴリ は項目fooの種別を示します。 次のようなカテゴリがあります。

FunctionScheme手続き
Special Form特殊形式 (R7RSでは「構文」)
Macroマクロ
Moduleモジュール
Classクラス
Generic Functionジェネリックファンクション
Methodメソッド
Reader Syntaxリーダによって解釈される構文要素
Parameterパラメータ。特定のプロトコルに従う手続きで、動的環境の操作に使われるもの。 詳しくはパラメータ参照。
Generic applicationGaucheでは、手続きでないオブジェクトをあたかの手続きのように 引数に「適用」することができます(詳しくは適用可能なオブジェクトを参照してください)。 このエントリは、オブジェクトが引数に適用された時のふるまいを説明します。

手続き、特殊形式、マクロに関しては、エントリの後に引数の仕様が示されます。 引数リストの中には次のような表記が現れることがあります。

arg …

ゼロ個以上の可変個の引数。

:optional x y z
:optional (x x-default) (y y-default) z

省略可能な引数の表記。この例では3つまでの省略可能な引数が取られることを示します。 2番目の形式ではxyについて省略された場合の既定値も示しています。 この形式の引数表記は、Schemeに対するGaucheの独自拡張です。 完全な仕様については手続きを作るを参照してください。

:key x y z
:key (x x-default) (y y-default) z

キーワード引数の表記。この例ではxyzの3つのキーワード引数を 取ることが示されます。2番目の形式ではxyについて省略された場合の 既定値も示しています。 この形式の引数表記も、Schemeに対するGaucheの独自拡張です。 完全な仕様については手続きを作るを参照してください。

:rest args

残りの引数全てがリストになってargsに束縛されることを示します。 この形式の引数表記も、Schemeに対するGaucheの独自拡張です。 完全な仕様については手続きを作るを参照してください。

説明が項目の行に続きます。もし項目が特定の標準に準拠している場合は、 もととなった標準が次のような形式で示されます。

[R7RS]
[R7RS+]
[R6RS]
[R6RS+]
[R5RS]
[R5RS+]

この項目はそれぞれR7RS, R6RS, R5RSで定義されるように動作します。 "[R7RS+]"のようにプラス記号がついている場合は、 R7RSの仕様に上位互換な形で機能が追加されていることを示します。

R7RSはほぼR5RSの上位互換であり、R6RSとも多くの機能を共有しているので、 R5RS、R6RSの表示はそれらがR7RSに含まれていない場合のみ記されます。

[SRFI-n]
[SRFI-n+]

この項目はSRFI-nに定義されるように動作します。"[SRFI-n+]"とマークされている場合は SRFI-nの仕様に上位互換な形で追加の機能が実装されていることを示します。

[POSIX]

この項目はPOSIXのAPIを反映していることを示します。


Previous: , Up: 表記について   [Contents][Index]

1.2.2 名前と名前空間

R6RSから、Schemeプログラムのトップレベル定義を複数の名前空間に分けて 書くことができるようになりました。Schemeの言語標準では名前空間を ライブラリと呼んでいます。GaucheはR6RSより前から名前空間を サポートし、モジュールと呼んできました。本マニュアルでは 従来どおりモジュールという呼称を使います。

(註: RnRSライブラリは、厳密に言えばGaucheのモジュールよりも抽象的な概念です。 RnRSでは処理系がライブラリを様々な方法で実装できるように規程しています。 Gaucheではたまたま、モジュールという仕組みを使ってRnRSライブラリのの概念が 実現されているということです。ポータブルなR7RSライブラリを書く時は、 Gauche特有のモジュールのセマンティクスに依存しないように気をつけてください。 特に、RnRSライブラリはGaucheのモジュールよりも静的です。 例えばRnRSの規格内では、既に存在するライブラリに定義を追加することはできません。)

時に、同じ名前に対して異なるモジュールで別々の定義が与えられることがあります。 それらを区別する必要がある時は、本マニュアルでは名前の前にモジュール名と ハッシュ記号をつけて表記します。例えば、gauche#lambdagaucheモジュールで定義されたlambdaを指します。 これはあくまで説明のための表記で、 ソースコードにgauche#lambdaと書けるわけではないことに 注意してください。


Previous: , Up: 表記について   [Contents][Index]