我试图理解分隔的延续,我正在阅读这篇文章:
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)
)。