Would it work to have your code expand into uses of
with-unquote-rewriter that chained things together?

Alternatively, I wouldn't mind if something like that were folded into
Redex itself and with-unquote-rewriters left as part of the public API
for backwards compatibility reasons.

And one other thought: I generally have discouraged the use of unquote
rewriters in favor of writing little meta-functions (whose body uses
unquote) and then using compound rewriters to adjust the metafunction
calls. Does that work well in your use cases?

Robby


On Sun, Aug 23, 2015 at 5:27 PM, Matias Eyzaguirre <[email protected]> wrote:
> To get rid of racket expressions that have been embedded in metafunctions and 
> reduction relations, you use `with-unquote-rewriter`, but you can currently 
> only have one rewriter active at a time (as underneath it's a single 
> parameter that holds a function).
>
> I've been writing a little library to make working with rewriters a little 
> more friendly, I expose a rewriter stack that you can push and pop atomic and 
> compound rewriters to. I've been thinking about how best to add support for 
> unquote rewriters, but I'm stumped.
>
> One possibility that occurred to me was to have pushing an unquote rewriter 
> procedure RW onto the stack just set the current unquote rewriter to a 
> function that calls RW on the lw in question, and if RW produces an lw where 
> the unq? field is true, then that is the result, otherwise use the previous 
> unquote rewriter (thus rewriters that don't want to make a change pass 
> responsibility up the stack). Other than the fact that this could get rather 
> slow when the unquote-rewriter stack gets really deep, redex currently 
> doesn't publicly export the current-unquote-rewriter parameter. Would it be 
> possible to make that change?
>
> In the meantime I suppose I shall make my own parameter for keeping track of 
> unquote-rewriters, though this has the disadvantage of not knowing anything 
> about unquote-rewriters set with the with-unquote-rewriter macro.
>
> Another thought that would require more effort, why is there only ever a 
> single unquote-rewriter at a time? compound-rewriters and atomic-rewriters 
> both have a table, allowing multiple rewriters to be layered on top of each 
> other?
>
> Anyway thanks,
>     Matias Eyzagurre.
>
> --
> You received this message because you are subscribed to the Google Groups 
> "Racket Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to