fixedpoint.jp - なぜ shift / reset が R7RS small に入らなかったのか




なぜ shift / reset が R7RS small に入らなかったのか

call/cc による unlimited continuation だけではなく、delimited continuation が扱えるように shift と resetR7RS small に入れたら良かったのでは、という疑問を持ちました。実際"An argument against call/cc"に説明されているような積極的な根拠があります。

その答えは "Scheme Reports Working Group 1 Progress 2012"とされる文書に書かれていました:

Some interesting comments from the community
were simply beyond the scope of our standard. Oleg
Kiselyov made a detailed and persuasive case against
undelimited continuations as in call/cc in favor of
delimited continuations as in shift and reset. Unfor-
tunately, though delimited continuations are not by any
means a new concept, they have relatively little support
among implementations in comparison to call/cc.
Moreover, our backwards-compatibility requirements
make it impossible to remove such a fundamental part
of the language. What we can and will do, however, is
provide delimited continuations in addition to call/cc
in the large language, and hope their support and use
increases so this can be revisited in later standards.

というわけで R7RS large に期待しましょう。


© 2006-2013 fixedpoint.jp