On Tue, Nov 1, 2011 at 7:47 AM, Sam Tobin-Hochstadt <sa...@ccs.neu.edu> wrote: > [switching to dev@] > > Probably the right way to do this is for me to add a > `prop:match-expander' which can be added to arbitrary structure, and > then to use that in lang/private/firstorder on the `fo' struct.
I've now added `prop:match-expander'. The way to fix this problem (for `posn' as well as `color') is to create a new sub-structure of `fo', with an extra field that holds the match expander and the `prop:match-expander' property pointing to that field. Then `posn' and `color' can use that new sub-structure. Does that make sense? > On Mon, Oct 31, 2011 at 11:41 PM, Jay McCarthy <jay.mccar...@gmail.com> wrote: >> 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 >> <ro...@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.mccar...@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 >>>> <ro...@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 >>>>> <ro...@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 <adams...@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 <j...@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 <j...@cs.byu.edu> >> Assistant Professor / Brigham Young University >> http://faculty.cs.byu.edu/~jay >> >> "The glory of God is Intelligence" - D&C 93 >> >> _________________________________________________ >> For list-related administrative tasks: >> http://lists.racket-lang.org/listinfo/users > > > > -- > sam th > sa...@ccs.neu.edu > -- sam th sa...@ccs.neu.edu _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev