On Wed 08 Feb 2012 00:04, [email protected] (Ludovic Courtès) writes:

> scheme@(guile-user)> ,optimize (define (foo) (define bar (@ (chbouib) bar)) 
> bar)
> $11 = (define foo
>   (lambda ()
>     (let ((bar-1510 (if #f #f)))
>       (letrec*
>         ()
>         (begin (set! bar-1510 bar-1510) bar-1510)))))
>
> Here, the ‘bar’ local is always set to *undefined*, wrongfully.

It's actually an expander bug:

scheme@(guile-user)> ,expand (define (foo) (define bar (@ (chbouib) bar)) bar)
$2 = (define foo
  (lambda () (letrec* ((bar-92 bar-92)) bar-92)))

Andy
-- 
http://wingolog.org/



Reply via email to