User loginNavigation 
Resume using continuationsI am looking at a way to implement Resume in a CPSbased intermediate language. Resume allows to try again a calculation with a different value. If I mark the resume value with ^retry I want to do: 1 + ^retry 8 (* 9 *) retry 5 (* 6 *) In CPS, 1 + 8 may look like: lambda (k) (k (+ 1 8)) Then I will extract the continuation around "8" to save it in a "retry" variable: lambda (k) ((lambda (n) (k (+ 1 n))) 8) lambda (k) ((lambda (k') (k' 8)) (lambda (n) (k (+ 1 n)))) (* save continuation *) lambda (k) ((lambda (k') (do ((set! retry k') (k' 8)))) (lambda (n) (k (+ 1 n)))) I could do the same transformation for an arbitrary nested variable. What I do not like is that I use a "global" variable retry which I set!, but the alternative is to pass it around as a function parameter not very convenient. Is my reasoning correct? Is there a better way? By Denis Bredelet jido at 20080425 16:49  LtU Forum  previous forum topic  next forum topic  other blogs  3671 reads

Browse archives
Active forum topics 
Recent comments
3 weeks 5 hours ago
4 weeks 19 hours ago
6 weeks 2 days ago
7 weeks 14 hours ago
7 weeks 1 day ago
7 weeks 3 days ago
7 weeks 3 days ago
7 weeks 4 days ago
7 weeks 4 days ago
7 weeks 5 days ago