《式》を評価するための子プロセスを生成する.そしてpromiseを生成 して返す.子プロセスは《式》を評価すると,promiseの値を《式》の値に決定し,終了する.一方, future式を評価した親プロセ スは,子プロセスの終了を待たずに future式以降の評価を続ける.プロ セスがpromiseの値を必要とした場合は,promiseの値が決定されるまでそのプロ セスはサスペンドされる.
引数が future式の生成したpromiseであれば,値が決定されるまで待ち, その値を返す.そうでなければ,引数をそのまま返す.
(premature-return 〈関数〉《式》
《式
》) 【マクロ】
各《式》ごとにpromiseを用意し,これらを引数として〈関数〉を呼び出す.そしてその値を返す. これと同時に《式
》
《式
》を評価するた めのプロセスを生成し,対応するpromiseの値を《式
》の値に決 定する.
futureによって premature-return式を表現すると
となる.しかし premature-return式と future 式ではプロセスの扱い方が異なる. future式ではその引数の式を評価す るためにプロセスを生成する.しかし premature-return式では, premature-return式を評価したプロセスが《式(〈関数〉 (future 《式》)
(future 《式
》))
2つのプロセスを生成し,《式》と《式
》を並列 に評価する. pif式を評価した現在のプロセスは《条件》を評価 し,その値が #f以外なら《式
》を評価するプロセスを 殺し,《式
》の値を返す.《条件》の値が #fな ら《式
》を評価するプロセスを殺し,《式
》の 値を返す.《式
》が与えられていなければ ()を値として 返す.
《式》
《式
》を並列に評価し,いずれか の値が #f以外の値であれば他のプロセスを殺し,その値を返す. 《式
》
《式
》の値がすべて #fな ら #fを返す.
《式》
《式
》を並列に評価し,いずれか の値が #fであれば他のプロセスを殺し, #fを返す. 《式
》
《式
》のどの値も #fでなかっ たら,《式
》
《式
》のいずれかの 値を返す.