When I first started my project I tried using defrecord and defprotocol for
various data structurs and when I wanted an easy serialization function I
used pr-str and read-string, this worked great!... until I wanted to do
some refactoring and move some types to another namespace. After changing
the namespace name, I could no longer read the serialized data structures
since the serialized data included namespace and record type
#namespace.Record{:prop value .... }. Ideally, I would just be able to
redefine the reader literal for #namespace.Record so that I could define a
custom function or perhaps alias it to an equivalent record type in a
different namespace via *data-readers*, but this didn't seem to work for
me. It appears that data-readers can't override the reader literals for
record types and instead read-string throws a class not found exception. I
have since stopped using record types for serialization and saving
everything as maps, but this has increased the complexity of the
deserialization logic as I need to store the type information in fields and
restore these types after deserialization. I liked using record types, but
I don't like not being able to rename these types later if I change my
mind.
It seems to me that I should perhaps be able to override the reader
literals for record types?
--
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