fixedpoint.jp


SRFI 121と eof object (2015-02-24)

SRFI 121: Generators は、一般に羃等でない手続きを generator として扱うための API を定義しています。このような手続きは、繰り返し呼ばれる度ごとに値を生成していると考えることができます。あるいは、ある特定の集合から順番に値を返すものと見なすことができ、有限集合の場合は全ての値を返したら終了することになります。

この SRFI では、終了の印に eof object を用います。つまり、その手続きから eof object が返ってきたら終了となります。ファイル port から入力する際に末尾に到達したことを知らせる仕組みと似せています。

Scheme では、eof object は独自の型を持つ特別なオブジェクトです。このようなオブジェクトは、空リストと eof object だけです。

R5RS では eof-object? という述語だけがありました。R6RS で disjoint type となり、個別のオブジェクトを作成できるようになりました。R7RS-small も R6RS を踏襲しています(ただし R6RS と異なり、eof object 間の同値性については規定されていません)。

このような SRFI で利用されるなど、eof object の発展がうかがえます。


© 2006-2023 fixedpoint.jp