At Fri, 12 May 2017 13:38:44 -0300, Gustavo Massaccesi wrote: > I always thought it was strange that mutable pairs can’t be > chaperoned, but boxes and vectors of length 2 can. Moreover, there was > (is?) a plan to replace the implementation of mcons with structs. Does > #:authentic make this more consistent / efficient?
Yes: with `#:authentic`, mutable pairs could be implemented as structs and continue to be uncooperative while avoiding an extra check in `mpair?`. (I think we'd more likely want to take advantage of structs to get chaperones for mutable pairs, though.) > Also, what would happen in an alternative word where all the structs > were #:authentic by default and chaperones/impersonators must be > explicitly allowed with some keyword like #:chaperonable? The author of a library that exposes a structure type would have to think harder about whether chaperones/impersonators should be allowed --- which I think would mean almost always remembering to add `#:chaperonable`. It's awkward to need `#:authentic` in one context or `#:chaperonable` in the other, but favoring cooperation via chaperones (and therefore contracts) seems like a better default to me. -- You received this message because you are subscribed to the Google Groups "Racket Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/racket-dev/20170512170831.7FD43650091%40mail-svr1.cs.utah.edu. For more options, visit https://groups.google.com/d/optout.
