【发布时间】:2019-05-31 16:57:15
【问题描述】:
我正在尝试理解定界延续,我正在阅读这篇文章:
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))。
【问题讨论】:
标签: scheme racket continuations delimited-continuations