Yes Markku, you (and Matthias) are absolutely right... with let* works. I did a mistake like a very beginner... Nevertheless, now I have to re-formulate my macro. I started from something like: (define-syntax replace (syntax-rules (replace) [(replace input ...) (let* (...let-variables ...) (eval `(lambda (cntx) ... here unquote either let-variables and other utility functions... ... maybe reference external variables... ))])) What I do is simply to build the lambda code (with quasiquote ... unquote ...). The code is huge. It "replace" macro is some sort of compiler that generates the scheme code for a new construct in a new language (a chemical language) implemented on top of racket. Since Matthias suggested to avoid the (eval (quasiquote (lambda ...))) approach and replace it with a (lambda ... (quasiquote ...)), now my work is trying to redesign my implementation. Thank you, Cheers, Maurizio. |
_________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users