On Thu, Oct 23, 2008 at 10:27:18PM -0700, Shawn Rutledge wrote: > #;10> (begin (define update #f) (let ([v 'foo]) (set! update (lambda > (d s) (printf "~s was ~s~%" d (eval d)) (set! d s))))) > #;11> (update 'v 'bar) > Error: unbound variable: v > > What I'm trying to do is pass the name of a let-bound variable in to a > lambda defined within the let context, in order to tell that lambda to > access that let-bound variable. eval doesn't work because it looks in > the outer environment, right? (in which v is not bound)
Eval only sees the top-level environment. It may be possible to use the environments egg to construct your own environment containing v. Cheers, Peter -- http://sjamaan.ath.cx -- "The process of preparing programs for a digital computer is especially attractive, not only because it can be economically and scientifically rewarding, but also because it can be an aesthetic experience much like composing poetry or music." -- Donald Knuth
pgpEnyKWDPEYH.pgp
Description: PGP signature
_______________________________________________ Chicken-users mailing list Chicken-users@nongnu.org http://lists.nongnu.org/mailman/listinfo/chicken-users