fixedpoint.jp


Scheme の多値についてのある説明 (2007-12-15)

GaucheNested Set モデルを扱うためのコードを書いている際に、named let による再帰で木のノードを訪ねていく処理が出てきました。

そのコードを眺めているうちに Oleg Kiselyov 氏によって comp.lang.scheme に投稿されていた多値の意味合いについて述べた説明を思い出しました:

I believe there is a way to look at multiple values that might prove
less confusing and disturbing. Multiple values is a computational
_exception_. When the function 'values' is invoked with more or fewer
than one argument, the function does not return at all. Rather, it
throws an exception.

この説明を初めてみたときにはよく分かっていなかったのですが、改めて読んでみると多値と継続との関係がはっきり述べていて非常に納得できました。

また、R5RSdelay には多値を返す式を渡すことが想定されていないことにもようやく気づきました。


© 2006-2023 fixedpoint.jp