[racket-dev] [plt] Push #23181: master branch updated

From: Robby Findler (robby at eecs.northwestern.edu)
Date: Sat Aug 6 16:38:25 EDT 2011

I like it.

Robby

On Sat, Aug 6, 2011 at 2:47 PM, Casey Klein
<clklein at eecs.northwestern.edu> wrote:
> On Sat, Aug 6, 2011 at 1:58 PM, Robby Findler
> <robby at eecs.northwestern.edu> wrote:
>> On Sat, Aug 6, 2011 at 1:53 PM, Casey Klein
>> <clklein at eecs.northwestern.edu> wrote:
>>> On Sat, Aug 6, 2011 at 10:43 AM, Matthias Felleisen
>>> <matthias at ccs.neu.edu> wrote:
>>>>
>>>> 1. I like Robby's mode suggestion.
>>>> 2. I prefer shorter keywords, e.g., define-judgment.
>>>
>>> I'm having trouble reconciling these comments. Robby's suggestion, if
>>> I understand it correctly, is to overload the `define-relation' name
>>> instead of choosing a new one. If you supply the #:mode keyword, you
>>> get the `define-judgment-form' behavior (inputs and outputs, static
>>> checking, the `judgment-holds' syntax for application); if not, you
>>> get the current `define-relation' behavior.
>>
>> My suggestion was meant to be separate from the overloading thing. You
>> could use a #:mode even for define-judgment.
>>
>
> Oh, I see. I like that. How do you feel about using the same style for
> contracts? For example:
>
> (define-judgment-form nats
>    #:mode (sum I I O)
>    #:contract (sum n n n)
>    [(sum z n n)]
>    [(sum (s n_1) n_2 (s n_3))
>     (sum n_1 n_2 n_3)])
>



Posted on the dev mailing list.