I'm curious....in the original example you showed manual quasi-quoting and splicing....
In the final example, you just have normal forms with no quasi quoting. Assumably, the expressions are combined and eval'd in some lexical environment.
If the intent is to capture code, why isn't
sufficient? Is there some level of analysis (e.g. closing over vars) that I'm not seeing that you intend to include in the "call"?
If you want to capture the source and evaluate it, saving the source and the result in some structure, then it's still feasible with my proposal. Something like
(deftype Call [code]
(invoke [this] (eval `(do ~code)))) ;;probably would cache the result, this is a demo.
What am I missing?