I understand what's going on here (and I don't regard it as a bug that needs fixing) but I thought I'd share something that caught me off- guard, and perhaps should be mentioned in the docs for struct-maps.
Clojure 1.0.0- user=> (defstruct foo :bar :baz) #'user/foo user=> (def foo-bar (accessor foo :bar)) #'user/foo-bar user=> (= (struct foo 1 2) (eval (struct foo 1 2))) true user=> (foo-bar (struct foo 1 2)) 1 user=> (foo-bar (eval (struct foo 1 2))) java.lang.ClassCastException: clojure.lang.PersistentArrayMap cannot be cast to clojure.lang.PersistentStructMap (NO_SOURCE_FILE:0) i.e., struct-map-ness does not persist through evaluation. Client code must either avoid accessors for data that might be evaluated, or post-process the result of calling eval. I have a defstruct* macro that defines a structure and its accessors, so it's straightforward for me to also define a map->foo function that rebuilds the struct from the resultant map. -R --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to [email protected] Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/clojure?hl=en -~----------~----~----~----~------~----~------~--~---
