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