This defrecord2 implementation has key checks on construction but still allows you to forcibly insert other keys after the fact. I believe the proposed defrecord enhancements for 1.3 may have some similar opportunities. You could use your own assoc that checked the known record keys too.
https://github.com/david-mcneil/defrecord2 On Apr 22, 10:47 am, Armando Blancas <armando_blan...@yahoo.com> wrote: > With regard to mistyped keys in general, a simple option is to use > named keys; then the compiler will flag undefined ones. > (def k :key) > ... > (k m) > > On Apr 21, 10:44 pm, Christian Schuhegger > > > > <christian.schuheg...@gmail.com> wrote: > > I am taking up a discussion from > > 2010:https://groups.google.com/group/clojure/browse_frm/thread/60dff89149c... > > > I would prefer if it would be possible to define "closed maps", e.g. > > maps that allow only a certain set of keywords, both for get and > > "set" (like in assoc, assoc-in, update-in, ...). It would be nice if > > there would be an option on defrecord to mark the map as "closed". > > > I imagine that this would have some runtime penalty, because for every > > access it has to be verified if the key is a valid one. I understand > > that. Perhaps in that case the language could react differently based > > on the value of a dynamic var (*check-closed-defrecrod-p*) that can be > > set when the unit tests are run and could be false by default. > > > I guess this topic was already discussed several times. Could somebody > > point me to previous discussions and their outcome? > > I've found in addition the following thread where the idea of "safe > > maps" was discussed to some > > extent:https://groups.google.com/group/clojure/browse_frm/thread/134642cc76d... > > > Thanks, > > Christian -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en