The phrase "immediate instance of id" is meant to suggest that it doesn't have the extended fields.
What would you have written? Robby On Fri, Mar 25, 2011 at 10:04 AM, Nadeem Abdul Hamid <nad...@acm.org> wrote: > In that case, the documentation should probably be updated clearly to > note this different behavior -- the last sentence of the current: > http://docs.racket-lang.org/reference/struct-copy.html > says: > > " > (struct-copy id struct-expr [field-id expr] ...) > .... > The result of struct-expr can be an instance of a sub-type of id, but > the resulting copy is an immediate instance of id (not the sub-type). > " > > Which is why I didn't interpret the behavior as a bug, but a > limitation (albeit weird) of struct-copy. > > --- nadeem > > > On Fri, Mar 25, 2011 at 10:49 AM, Robby Findler > <ro...@eecs.northwestern.edu> wrote: >> Hi, and sorry for the delay. I've pushed a fix for this, altho it is >> more like a new feature since the code below still doesn't work--- you >> have to explicitly name the struct that had the field when it isn't >> the first argument to struct-copy. >> >> Robby >> >> On Fri, Mar 25, 2011 at 7:52 AM, Pierpaolo Bernardi <olopie...@gmail.com> >> wrote: >>> On Wed, Mar 23, 2011 at 00:49, Nadeem Abdul Hamid <nad...@acm.org> wrote: >>>> Is there anything like struct-copy that works to functionally update a >>>> field value in a structure, where the field happens to be defined in >>>> the super-type? In the example below, I want to "functionally update" >>>> a field of the sub structure inherited from the base definition... >>>> >>>> >>>> (struct base (a b) #:transparent) >>>> (struct sub base (c) #:transparent) >>>> >>>> (define S (sub 1 2 3)) >>>> >>>> (struct-copy sub S [c 4]) ; works >>>> ; doesn't work: (struct-copy sub S [b 4]) >>>> (struct-copy base S [b 4]) ; produces a base, not sub >>> >>> No answers? >>> >>> it looks to me that >>> >>> (struct-copy sub S [b 4]) >>> >>> should work, but it doesn't. Isn't this a bug? >>> >>> If it is not considered a bug, maybe the docs need a clarification? >>> >>> Cheers >>> P. >>> _________________________________________________ >>> For list-related administrative tasks: >>> http://lists.racket-lang.org/listinfo/users >>> >> > _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users