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

From: Zefram <[email-masked]>
Date: Fri, 24 Jun 2016 18:00:38 +0100

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@(guile-user)> (let ((x (list 'a)) (y (list 'a))) (eq? x y))
$1 = #f
scheme@(guile-user)> (let* ((x (list 'a)) (y (list 'a))) (eq? x y))
$2 = #t
scheme@(guile-user)> (let ((x (list 'a))) (let ((y (list 'a))) (eq? x y)))
$3 = #t

-zefram