bug#21899: let/ec continuations not distinct under compiler

2016-06-24 Thread Andy Wingo
On Fri 24 Jun 2016 19:00, Zefram writes: > Andy Wingo wrote: >> ,opt (let* ((x (list 'a)) >> (y (list 'a))) >> (list x y)) >> ;; -> >> (let* ((x (list 'a)) (y x)) (list x y)) > > Wow, that's a scary level of wrongitude. Indeed :/ Fixed in git with this patch: >From ea35

bug#21899: let/ec continuations not distinct under compiler

2016-06-24 Thread Zefram
One more variant: scheme@(guile-user)> (let ((x (list 'a))) (eq? x (list 'a))) $1 = #t scheme@(guile-user)> ,opt (let ((x (list 'a))) (eq? x (list 'a))) $2 = (let ((x (list 'a))) (eq? x x)) -zefram

bug#21899: let/ec continuations not distinct under compiler

2016-06-24 Thread Zefram
Andy Wingo wrote: > ,opt (let* ((x (list 'a)) > (y (list 'a))) > (list x y)) > ;; -> > (let* ((x (list 'a)) (y x)) (list x y)) Wow, that's a scary level of wrongitude. It's specific to let* (or equivalent nested let forms), but really easy to trigger within that: scheme@(

bug#21899: let/ec continuations not distinct under compiler

2016-06-24 Thread Andy Wingo
On Fri 24 Jun 2016 18:29, Andy Wingo writes: > On Fri 13 Nov 2015 08:57, Zefram writes: > >> With guile 2.0.11: >> >> scheme@(guile-user)> (use-modules (ice-9 control)) >> scheme@(guile-user)> (list 'a (let/ec ae (list 'b (let/ec be (be 2) >> $1 = (a (b 2)) >> scheme@(guile-user)> (list 'a (

bug#21899: let/ec continuations not distinct under compiler

2016-06-24 Thread Andy Wingo
On Fri 13 Nov 2015 08:57, Zefram writes: > With guile 2.0.11: > > scheme@(guile-user)> (use-modules (ice-9 control)) > scheme@(guile-user)> (list 'a (let/ec ae (list 'b (let/ec be (be 2) > $1 = (a (b 2)) > scheme@(guile-user)> (list 'a (let/ec ae (list 'b (let/ec be (ae 2) > $2 = (a (b 2)

bug#21899: let/ec continuations not distinct under compiler

2015-11-12 Thread Zefram
With guile 2.0.11: scheme@(guile-user)> (use-modules (ice-9 control)) scheme@(guile-user)> (list 'a (let/ec ae (list 'b (let/ec be (be 2) $1 = (a (b 2)) scheme@(guile-user)> (list 'a (let/ec ae (list 'b (let/ec be (ae 2) $2 = (a (b 2)) scheme@(guile-user)> (list 'a (let/ec ae (list 'b (ae