Как интерпретировать callCC в Haskell?

На схеме выполнение продолжения, полученного изcall/cc эффективно возвращается к этому начальному вызову / cc и восстанавливает сохраненный стек вызовов.

Я только начал изучать Haskell, и я пытаюсь понять, как понятьcallCC, То есть попытаться понятьcallCC с точки зрения понимания схемыcall/cc, РеализацияcallCC является

callCC f = cont $ \h -> runCont (f (\a -> cont $ \_ -> h a)) h

Насколько я могу судить, ничего не упоминается о сохраненных или восстановленных стеках вызовов. Как можно интерпретироватьcallCC в Haskell исходя из знакомства с Scheme'scall/cc.

Редактировать: Может быть, если бы кто-то мог перевести следующее на Haskell, это помогло бы мне понять.

(define (f return)
  (return 2)
  3)

(display (f (lambda (x) x))) ; displays 3

(display (call-with-current-continuation f)) ; displays 2

Ответы на вопрос(2)

Ваш ответ на вопрос