[plt-scheme] Re: newbie question
Thank you all.
I think I've found the answer.
When I use
(define ha (make-running-total))
ha actually is an instance of the procedure
      (lambda ()
        (let ([m n])
          (set! n (+ n 1))
          (list m n)))
and when I call ha
    (let ([n 0])
will not take effect any more.
This is why I cannot use (make-running-total) to call the procedure
but ((make-running-total)).
Am I right?
On Feb 21, 11:26 am, "donal... at yahoo.cn" <donal... at yahoo.cn> wrote:
> With the following program
>
> #lang scheme
> (define make-running-total
>   (lambda ()
>     (let ([n 0])
>       (lambda ()
>         (let ([m n])
>           (set! n (+ n 1))
>           (list m n))))))
> ((make-running-total))
> ((make-running-total))
> (define ha (make-running-total))
> (ha)
> (ha)
>
> why the result is
>
> (0 1)
> (0 1)
> (0 1)
> (1 2)
>
> It seems when I call (ha), the n is a static variable.
> _________________________________________________
>   For list-related administrative tasks:
>  http://list.cs.brown.edu/mailman/listinfo/plt-scheme