Я пытаюсь найти, как реализован call/cc. Лучшее, что я нашел, это фрагмент на Haskell:
callCC f = Cont $ \k -> runCont (f (\a -> Cont $ \_ -> k a)) k
Хотя это не так просто, как я хочу, из-за Cont
и runCont
. Я также нашел описания того, что это делает, хотя они никогда не были так ясны, как реальный код.
Так как же он реализован в своей простейшей форме? Я помечаю это Scheme и Haskell, поскольку это два языка, которые я предпочитаю.