|
| From: | Graham Fawcett |
| Subject: | Re: [Chicken-users] Re: eval and local variables |
| Date: | Tue, 8 May 2007 14:52:58 -0400 |
On 5/8/07, Graham Fawcett <address@hidden> wrote:
On 5/8/07, Graham Fawcett <address@hidden> 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
| [Prev in Thread] | Current Thread | [Next in Thread] |