Joo ChurlSoo
2011-01-13 07:18:20 UTC
The following seems to be a bug.
(path '())
(g (make-parameter 'g))
(c #f))
(let ((add (lambda () (set! path (cons (f) path)))))
(add)
(parameterize ((f 'b)
(g (call-with-current-continuation (lambda (c0) (set! c c0) 'c))))
(add) (f (g)) (add))
(f 'd)
(add)
(if (< (length path) 5)
(c 'e)
(reverse path))))
'(a b c d c e d) ;(a b c d b e d)
(path '())
(g (make-parameter 'g))
(c #f))
(let ((add (lambda () (set! path (cons (f) path)))))
(add)
(parameterize ((f 'b))
(g (call-with-current-continuation (lambda (c0) (set! c c0) 'c)))
(add) (f (g)) (add))
(f 'd)
(add)
(if (< (length path) 5)
(c 'e)
(reverse path))))
'(a b c d c e d)
,open srfi-39
(let ((f (make-parameter 'a))(path '())
(g (make-parameter 'g))
(c #f))
(let ((add (lambda () (set! path (cons (f) path)))))
(add)
(parameterize ((f 'b)
(g (call-with-current-continuation (lambda (c0) (set! c c0) 'c))))
(add) (f (g)) (add))
(f 'd)
(add)
(if (< (length path) 5)
(c 'e)
(reverse path))))
'(a b c d c e d) ;(a b c d b e d)
;; cf.
(let ((f (make-parameter 'a))(path '())
(g (make-parameter 'g))
(c #f))
(let ((add (lambda () (set! path (cons (f) path)))))
(add)
(parameterize ((f 'b))
(g (call-with-current-continuation (lambda (c0) (set! c c0) 'c)))
(add) (f (g)) (add))
(f 'd)
(add)
(if (< (length path) 5)
(c 'e)
(reverse path))))
'(a b c d c e d)
--
Joo ChurlSoo
Joo ChurlSoo