[racket] Splicing a variable to serve as let declarations

From: J Arcane (jarcane at gmail.com)
Date: Mon Dec 8 02:46:31 EST 2014

I've been experimenting with a new feature for Heresy, and I find myself in
need of a macro that can insert the contents of an a-list into a let syntax
to serve as its definitions. I am utterly failing to accomplish this. It
seems like it should be simple enough to splice a variable's contents into
the syntax, and in a sense it is, but not if I want it to actually then
evaluate.

For example, I can do this:

(define dave '((is 5) (fat 6)))

(define-syntax letexpand
  (syntax-rules ()
    [(_ alst body ...)
     #`(let #,alst body ...)]))

(letexpand dave is fat)

Which returns a syntax object which looks like what I want:

#<syntax:...:8:7 (let ((is 5) (fat 6)) is fat)>

But doesn't actually the evaluate that object. But doing that with merely
(let alst body ...) creates an error because rather than splicing alst's
contents itself, it merely inserts the variable name given, and then fails
because let doesn't recognize it. It will work with a handwritten unquoted
alist in that space, but this is largely useless because of course that's
what let already basically does anyway.

Am I starting in the wrong place here, and if not, how do I turn that
syntax object into something that actually evaluates?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20141208/9fe0a58b/attachment.html>

Posted on the users mailing list.