I guess I have a better test case for you.

"plus1" was my 1st attempt to simplify the code.  Too much however, this
one prints "2".  "len" has almost the same structure - but breaks.


cat << EOF > t-lambdalift.scm
(define (plus1 a)
  (define (plus b)
    (+ a b))
  (plus 1))

(print (plus1 1))

(define (len lst)
  (define (len n)
    (if (pair? lst)
        (begin
          (set! lst (cdr lst))
          (len (+ n 1)))
        n))
  (len 0))

(print (len '(1 2 3)))
EOF
$csc -lambda-lift  t-lambdalift.scm 
$ ./t-lambdalift 
2
Error: unbound variable: lst13

        Call history:

        t-lambdalift.scm: 6    plus1            
        t-lambdalift.scm: 6    print            
        t-lambdalift.scm: 17   len              
        t-lambdalift.scm: 15   len                      <--


_______________________________________________
Chicken-users mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/chicken-users

Reply via email to