[racket] match in Advanced Student?

From: Jay McCarthy (jay.mccarthy at gmail.com)
Date: Mon Oct 31 23:41:48 EDT 2011

I think extending define-primitive the right thing to do... just
saying it isn't what I did.

On Mon, Oct 31, 2011 at 9:02 PM, Robby Findler
<robby at eecs.northwestern.edu> wrote:
> Are you referring to the special case on line 2730 of teach.rkt when
> you say posns?
>
> I think that means that I'd have to make the teaching language depend
> on 2htdp/image, which doesn't seem right.
>
> I would have thought that the right thing would be to extend the
> define-primitive protocol so that I can declare that 'color' is both a
> function and a struct constructor and then match would not have to
> special case 'color'. No?
>
> Robby
>
> On Mon, Oct 31, 2011 at 9:48 PM, Jay McCarthy <jay.mccarthy at gmail.com> wrote:
>> The HtDP match implementation has a list of such things and goes and
>> finds them to turn them back into the non-primitive bound things.
>> That's why it works with posns.
>>
>> Something better could be done, but for now you could add it to the white list.
>>
>> Jay
>>
>> On Mon, Oct 31, 2011 at 8:45 PM, Robby Findler
>> <robby at eecs.northwestern.edu> wrote:
>>> Oh, I see why. 'color' is bound using define-primitive in order to
>>> cooperate with the beginner language (and so that 'color' can be a
>>> constructor). But doing that interferes with the usual information
>>> bound by a struct that match picks up.
>>>
>>> I'm not sure what the right way to resolve this is.
>>>
>>> Robby
>>>
>>> On Mon, Oct 31, 2011 at 9:39 PM, Robby Findler
>>> <robby at eecs.northwestern.edu> wrote:
>>>> Is make-color coming from 2htdp/image? I see that's not working (not
>>>> sure why yet).
>>>>
>>>> Robby
>>>>
>>>> On Mon, Oct 31, 2011 at 9:34 PM, Adam Shaw <adamshaw at cs.uchicago.edu> wrote:
>>>>> Thanks! That still doesn't work for color:
>>>>>   match: color does not refer to a structure definition
>>>>> although it does work with my own custom color struct:
>>>>> (define-struct clr (r g b))
>>>>> (match (make-clr 1 2 3)
>>>>>   [(struct clr (r g b)) (* r g b)])
>>>>>   - Adam
>>>>> On Oct 31, 2011, at 9:26 PM, Jay McCarthy wrote:
>>>>>
>>>>> One of the branches of the pattern language is
>>>>>
>>>>> | (struct id (pattern ...))
>>>>>
>>>>> Your pattern should be
>>>>>
>>>>> (struct color (r g b))
>>>>>
>>>>>
>>>>> _________________________________________________
>>>>>  For list-related administrative tasks:
>>>>>  http://lists.racket-lang.org/listinfo/users
>>>>>
>>>>
>>>
>>
>>
>>
>> --
>> Jay McCarthy <jay at cs.byu.edu>
>> Assistant Professor / Brigham Young University
>> http://faculty.cs.byu.edu/~jay
>>
>> "The glory of God is Intelligence" - D&C 93
>>
>



-- 
Jay McCarthy <jay at cs.byu.edu>
Assistant Professor / Brigham Young University
http://faculty.cs.byu.edu/~jay

"The glory of God is Intelligence" - D&C 93



Posted on the users mailing list.