(cc'ing the list)

Cool, I hadn't seen that library. I think this approach would get the job
done.

Thanks,
Sam Caldwell

On Wed, Oct 26, 2016 at 12:25 PM, Sam Caldwell <s...@ccs.neu.edu> wrote:

> Cool, I hadn't seen that library. I think this approach would get the job
> done.
>
> Thanks,
> Sam Caldwell
>
> On Tue, Oct 25, 2016 at 10:33 AM, Dupéron Georges <
> jahvascriptman...@gmail.com> wrote:
>
>> Sam, would something like this work for you?
>>
>> I'm using the generic-syntax-expanders library to easily define expanders
>> (sorts of macros) which are expanded within uses of a wrapper of
>> define-judgment-form.
>>
>>
>>
>> #lang racket
>>
>> (require (rename-in redex
>>                     [define-judgment-form orig:define-judgment-form])
>>          generic-syntax-expanders)
>>
>> (define-language L
>>   (E number (+ E E)))
>>
>> (define-expander-type judgment-form)
>> (define-syntax (define-judgment-form stx)
>>   (syntax-case (expand-all-judgment-form-expanders stx) ()
>>     [(self . rest)
>>      (with-syntax ([new-self (datum->syntax #'here
>>                                             'orig:define-judgment-form
>>                                             #'self
>>                                             #'self)])
>>        (datum->syntax #'here
>>                       `(,#'new-self . ,#'rest)
>>                       stx
>>                       stx))]))
>>
>> (define-judgment-form-expander where/not
>>   (λ (stx)
>>     (syntax-case stx ()
>>       [(_ pat tm)
>>        #'(side-condition ,(not (redex-match? L pat (term tm))))])))
>>
>> (define-judgment-form L
>>   #:mode (j I)
>>   [(where/not number E)
>>    ---------------------
>>    (j E)])
>>
>> --
>> 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.
>>
>
>

-- 
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.

Reply via email to