Hi Stuart,
When I try using deftype I get the following error:
java.lang.IllegalArgumentException: No method in multimethod 'print-
dup' for dispatch value: class user.Y__5
Do I have to supply my own print-dup for the new type for this to
work?
Here is the code:
(import
'(java.io StringReader PushbackReader))
(deftype Y [a b])
(defn serialize [x]
(binding [*print-dup* true] (pr-str x)))
(defn deserialize [x]
(let [r (new PushbackReader (new StringReader x))]
(read r)))
(def y (Y "a" "b"))
(deserialize (serialize y))
I'm thinking the easiest way to accomplish what I need is to serialize
the structmaps as hashmaps when writing them, and then deserialize the
hashmap into a new structmap when reading them.
On Jan 26, 9:01 am, Stuart Sierra <[email protected]> wrote:
> On Jan 26, 11:40 am, jleehurt <[email protected]> wrote:
>
> > Thanks Anders. I'm not sure why, but it appears that read does not
> > support structmaps.
>
> That is correct, read does not work with structmaps, because it
> doesn't know how to resolve the struct definition while reading.
>
> deftype, the replacement for structmaps, solves that problem.
>
> -SS
--
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