Joo ChurlSoo <init...@gmail.com> writes: > The following behavior of `let' seems to be wrong. > > guile> (version) > "1.8.8" > guile> > (let ((go #f) > (alist '())) > (let ((a 1) (b (call-with-current-continuation (lambda (x) (set! go x) 2)))) > (set! alist (cons (cons a b) alist)) > (set! a 100) > (set! alist (cons (cons a b) alist)) > (if (< (length alist) 3) > (go 2) > (reverse alist)))) > ((1 . 2) (100 . 2) (100 . 2) (100 . 2)) > guile>;; inconsistency between let and lambda > (let ((go #f) > (alist '())) > ((lambda (a b) > (set! alist (cons (cons a b) alist)) > (set! a 100) > (set! alist (cons (cons a b) alist)) > (if (< (length alist) 3) > (go 2) > (reverse alist))) > 1 (call-with-current-continuation (lambda (x) (set! go x) 2)))) > ((1 . 2) (100 . 2) (1 . 2) (100 . 2)) > guile>
For what it's worth, my current Guile, from Git post 1.9.14, gives ((1 . 2) (100 . 2) (1 . 2) (100 . 2)) for both cases. Neil