Я пытаюсь понять продолжения с разделителями, и я читал эту статью:
http://community.schemewiki.org/?composable-continuations-tutorial
И я нашел это преобразование сброса / сдвига
(reset (...A... (shift V E) ...B...))
; -->
(let ((V (lambda (x) (...A... x ...B...))))
E)
Например, я попытался преобразовать это выражение (я думаю, append-map от Racket)
(reset (list (
(lambda (x) (* x x)) (shift k (append-map k '(1 2))) )))
и получил это
(append-map
(lambda (y) (list ((lambda (x) (* x x)) y))) '(1 2))
с тем же результатом '(1 4)
Мне было интересно, можно ли применить такое же преобразование (которое устранит сброс / смещение) к выражению, подобному этому:
(reset (list (+
(shift k (append-map k '(1 2)))
(shift k (append-map k '(3 4))) )))
и как будет выглядеть результат (он оценивается как '(4 5 5 6)
).