R6RS:翻訳:R6RS:6.2 Procedure entries

R6RS:翻訳:R6RS:6.2 Procedure entries

6.2 手続きの項目

分類 が procedure である場合、その項目は手続きについて説明し、頭書行はその手続きの呼び出しの雛形を与える。 template 中の仮引き数名はイタリックになっている。したがって頭書行

[procedure] (vector-ref vector k)

は組込み関数 vector-ref は引き数をふたつ取り、それはベクタ vector と正確な非負整数 k (下記参照)であることを示している。頭書行

[procedure] (make-vector k)

[procedure] (make-vector k fill)

は make-vector 手続きはひとつないしふたつ引き数を取ることを示している。仮引き数名の大文字小文字に意味はない。 Vectorvector と同じである。

構文の template と同じく、頭書行の末尾の省略記号 ... は、

[procedure] (= z1 z2 z3 ...)

にあるように、最後の仮引き数名で指定されたものと同じ型の引き数を任意個数取ることを示している。この場合、 = は 3 つ以上の引き数をとり、すべて複素数オブジェクトでなければならない。

手続きが取り扱うことができないと指定された引き数を検知した場合 &assertion コンディション型の例外が発生する。また、引き数の規定は網羅的である。手続き呼び出しに与えられた引き数の個数が手続きの受け付ける引き数の個数のいずれとも一致しない場合にも &assertion コンディション型の例外が発生する。

簡潔さのため、本報告書では仮引き数の名前が型の名前でもあった場合、対応する引き数はその名前の型でなければならないという慣習に従うものとする。例えば上に挙げられていた vector-ref の頭書行は vector-ref の最初の引き数はベクタでなければならないことを定めている。以下の名前付け規約によって型の制約が示される。

obj

任意のオブジェクト

z

複素数オブジェクト

x

実数オブジェクト

y

実数オブジェクト

q

有理数オブジェクト

n

整数オブジェクト

k

正確な非負整数オブジェクト

bool

真偽値(#f か #t)

octet

0 以上 255 以下の正確な整数オブジェクト

byte

-128 以上 127 以下の正確な整数オブジェクト

char

文字(R6RS:翻訳:R6RS:11.11 Characters参照)

pair

対(R6RS:翻訳:R6RS:11.9 Pairs and lists参照)

vector

ベクタ(R6RS:翻訳:R6RS:11.13 Vectors参照)

string

文字列(R6RS:翻訳:R6RS:11.12 Strings参照)

condition

コンディション(R6RS:翻訳:Standard Libraries:7.2 Conditions参照)

bytevector

バイトベクタ(R6RS:翻訳:Standard Libraries:2 Bytevectors参照)

proc

手続き(R6RS:翻訳:R6RS:1.6 Procedures参照)

その他の型についての制約は特定の章で説明される命名規約で表現される。例えば、ライブラリのR6RS:翻訳:Standard Libraries:11 Arithmetic章では様々な数の部分集合に特別な仮引き数変数を使っている。

上に挙げた型の制約について、対応する引き数が指定された型であるように保証するのはプログラマの責任である。その型を確認するのは実装系の責任である。

list という仮引き数はリスト(R6RS:翻訳:R6RS:11.9 Pairs and lists参照)を引き数として渡すのがプログラマの責任であることを意味している。その引き数がその機能を果たす操作に適当な構造をしているか、可能かつ現実的な範囲で確認するのは実装系の責任である。実装系は最低でもその引き数が空リストか対であるかは確認しなければならない。

手続きの説明では引き数への別の制約が示されることもある。典型的には、そのような制約は「x は~でなければならない」という表現(または「~しなければならない」という表現)で示される。


Last modified : 2008/11/08 19:23:53 UTC