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

11.53 srfi.216 - SICP用ライブラリ

Module: srfi.216

このモジュールは、『計算機プログラムの構造と解釈』(SICP)の練習課題を実装するための いくつかのユーティリティを提供します。

このモジュールを提供する主な目的は、このモジュールに依存している既存のコードの移植性のためです。 SICPの課題をGaucheで解きながら学んでいる場合は、 Gauche-compat-sicp拡張 (https://github.com/shirok/Gauche-compat-sicp)を使うことをおすすめします。 Gauche特有の問題への対応が入っています。

Constant: true
Constant: false
Constant: nil

[SRFI-216]{srfi.216} それぞれ#t#f()に束縛された定数です。

Function: runtime

[SRFI-216]{srfi.216} 過去のある時点から、時間経過によって単調増加する正確な整数を返します。 具体的な値に意味はありませんが、二つのruntime呼び出しの差を取ることで 相対的な時間経過を比較することができます。

Function: random n

[SRFI-216]{srfi.216} nは正の実数でなければなりません。n未満のランダムな非負整数を返します。

nが正確数なら、正確な整数が返ります。 そうでなければ不正確な整数が返ります。

Function: parallel-execute thunk thunk2 …

[SRFI-216]{srfi.216} 与えられたthunkを、スレッドを使って並列に実行します。 全てのthunkの実行が終了したら、未定義の値を返します。

Function: test-and-set! pair

[SRFI-216]{srfi.216} 引数は変更可能なペアでなければなりません。 そのcar#fなら、それを#tに変えて#fを返します。 そうでなければ引数は変更せずに#fを返します。 この操作はアトミックに行われます。

Macro: cons-stream a b

[SRFI-216]{srfi.216} (cons a (delay b))へと展開されます。car部分にあたる aは積極的に評価されることに注意してください。

これはutil.streamstream-consと異なります (Stream primitives参照)。SICPはマクロを陽に使わないので、 このオペレータがプリミティブとして用意されている前提で書かれています。

Constant: the-empty-stream

[SRFI-216]{srfi.216} 空のストリームを表すシングルトンインスタンスです。 これは、次のstream-null?と一緒に使われなければなりません。 util.streamstream-nullと互換性はありません (Stream primitives参照)。

Function: stream-null? obj

[SRFI-216]{srfi.216} objthe-empty-streamであれば#tを、 そうでなければ#fを返します。 これはutil.streamstream-null?とは異なります (Stream primitives参照)。



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