<span id="mailbox-conversation"><div>I think the way i have seen this done is to use a macro at the top level instead of a provide transformer.</div>
<div><br></div>
<div>for example define/provide-test-suite from rackunit probably works a little like</div>
<div><br></div>
<div>(define/provide-test-suite tests blah blah …)</div>
<div><br></div>
<div>=></div>
<div><br></div>
<div>(begin </div>
<div>   (provide tests)</div>
<div>   (define tests (test-suite blah blah blah …))</div>
<div><br></div>
<div><br></div>
<div>So maybe you could make a provide/test-pred form?</div></span><div class="mailbox_signature"><br></div>
<br><br><div class="gmail_quote"><p>On Fri, Sep 19, 2014 at 4:42 PM, Jack Firth <span dir="ltr"><<a href="mailto:jackhfirth@gmail.com" target="_blank">jackhfirth@gmail.com</a>></span> wrote:<br></p><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div dir="ltr">I've been looking into how to design a macro that would specify tests in a provide transformer, for example something like<div><br></div>
<div>    (provide (test-pred-out some-integer integer?))</div>
<div><br></div>
<div>I'd like that to expand to:</div>
<div><br></div>
<div>    (provide some-integer)<br>    (module+ test</div>
<div>      (check-pred integer? some-integer))</div>
<div><br></div>
<div>From what I can gather from the reference, normally provide forms are done with define-provide-syntax, but that macro doesn't let me splice anything into the module body. The reference mentions provide pre-transformers, and says:</div>
<div><br></div>
<div>"A provide pre-transformer is applied as part of the first phase of a module’s expansion. Since it is used in the first phase, a provide pre-transformer can use functions such as syntax-local-lift-expression to introduce expressions and definitions in the enclosing module."</div>
<div><br></div>
<div>So it sounds like what I want is definitely possible, but I have no idea how to actually <i>do</i> it. Does anyone have some simple well-explained examples to guide me in the right direction?</div>
</div></blockquote></div><br>