On Jun 10, 2013, at 8:18 AM, Tim Brown wrote: > On 09/06/13 18:54, Matthias Felleisen wrote: >> I have taken the liberty to rewrite the code according to the Style >> gide, since I am the author of this document: > > I've found this (and I have seen it before): > http://www.ccs.neu.edu/home/matthias/Style/style/index.html > but is it included in the Racket documentation? > If so, where?
It will be moved into the core documentation as soon as Eli finds the time to run the appropriate git command. > (fill-sack items 0.25 25 null 0) ; stated problem > > So, thanks for your "honesty" Matthias, but you're being too kind :-) The honesty was with respect to Eli's rewrite. If you really are in need of such a function, I think it is clearer to have two: fill-sack/public fill-sack/private If this is a library, export the first. If this is plain old code in an application, make the second one local to the first. > The <identifier>* notation... is that Style? No. My personal convention. On Jun 10, 2013, at 8:20 AM, Tim Brown wrote: > I find them particulary hard to use in a purely functional (non-mutable) > way, since there is no shorthand way of copying a struct. AFAICT, at the > moment, to copy an item I need to: > > (struct item (name explanation value weight volume) #:prefab) > (define gold (item "gold (bars)" "Shiney shiney" 2500 2.0 0.002)) > (define fools-gold > (item > (item-name gold) > (item-explanation gold) > 2.50 > (item-weight gold) > (item-volume))) > > Possibly with some variation on extracting the fields, using match or > whatever. Even with a match, you still need to evaluate each of the > fields; and if I want to copy one field from an n-field struct, I need n > field accessors, and n fields in the constructor (with one of them > modified). > > What I would really like to have is the following defined by (struct item): > > (define fools-gold (copy-item gold #:value 2.50)) > > Am I missing a trick? Why not struct-copy: (define gold (item "gold (bars)" "Shiney shiney" 2500 2.0 0.002)) (define fools-gold (item (item-name gold) (item-explanation gold) 2.50 (item-weight gold) (item-volume gold))) (define fools-gold2 (struct-copy item gold (value 2.50))) (equal? fools-gold fools-gold2) ____________________ Racket Users list: http://lists.racket-lang.org/users