On 5/8/07, Graham Fawcett <[EMAIL PROTECTED]> wrote:
On 5/8/07, Graham Fawcett <[EMAIL PROTECTED]> wrote: > Here's a cheap-and-dirty way to do it; it's not perfect (especially > because there's some redundant typing involved) but you can have it > today: > > (define-macro (eval-with-locals locals expr) > `((eval '(lambda ,locals ,(eval expr))) ,@locals))
Try this instead: (define-macro (eval-with-locals locals expr) `((eval (list 'lambda ',locals ,expr)) ,@locals)) Example: (define z 1000) (let ((x 10) (y 100) (expr '(+ x y z))) (eval-with-locals (x y) expr)) ==> 1110 Graham _______________________________________________ Chicken-users mailing list Chicken-users@nongnu.org http://lists.nongnu.org/mailman/listinfo/chicken-users