I think the guile-user list might be more appropriate.
Noted
(let-syntax ((outer (lambda (x) #'(+ 1 2)))) (let-syntax ((inner (lambda (x) (outer x)))) (inner)))
That works, but I guess this isn't possible then (lambda* (#:key outer) (let-syntax ((inner outer)) (inner ...))) Since that would require evaluating run-time code at compile-time Is there a way to write a macro that's expanded at run-time? It feels like I'm asking the wrong question now, but I'm really looking for a way to bind macros at run-time so they can be used functionally I guess the right answer is to use functions instead of macros?