I have a macro that creates a transformer binding. This binding has prop:procedure on it, so when used, it functions as a macro and expands into something else. This works great, but I have another requirement: when this binding is provided, I actually want to provide an entirely different value in its place.
Initially, I tried to accomplish this by attaching prop:provide-transformer to my value, but that property is not consulted when the provided identifier is being used as a bare identifier instead of in a function call-like form. I understand the general reasoning behind this — most of the time, provide transformers are used as abbreviations for other provide forms — but in my case, I want to leverage the provide transformer mechanism to actually provide something different in place of the binding. The reason I want to do this is complex, and I am willing to explain it if requested, but my need is simply that I want the ability to automatically substitute a value at the module boundary. Any way to accomplish this would be okay, including possibly adjusting my prop:procedure value to conditionally expand into different things depending on whether or not the identifier is being used from within the declaring module, but I would much prefer a way to do it at provide-time if at all possible. It seems that possibly Typed Racket’s identifiers somehow do something similar, though not quite the same? That is, they are provided with contracts when used in an untyped module but provided bare when used in another typed module? Could that approach be used here, and if so, how is that implemented (in broad strokes)? Thanks, Alexis -- 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 racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.