реализация call/cc?

Я пытаюсь найти, как реализован call/cc. Лучшее, что я нашел, это фрагмент на Haskell:

callCC f = Cont $ \k -> runCont (f (\a -> Cont $ \_ -> k a)) k

Хотя это не так просто, как я хочу, из-за Cont и runCont. Я также нашел описания того, что это делает, хотя они никогда не были так ясны, как реальный код.

Так как же он реализован в своей простейшей форме? Я помечаю это Scheme и Haskell, поскольку это два языка, которые я предпочитаю.

27
задан bdonlan 29 January 2012 в 04:19
поделиться