Hi,
I've encountered this behaviour of *print-dup*:
user> (defstruct foo :field)
#'user/foo
user> (binding [*print-dup* true] (pr-str (struct foo 10)))
"#=(clojure.lang.PersistentStructMap/create {:field 10})"
user> (read-string (binding [*print-dup* true] (pr-str (struct foo 10))))
java.lang.IllegalArgumentException: No matching method found: create
with both Clojure 1.2.1 and 1.3.0.
I've been wondering if this could be called a bug. Obviously, in general
*print-dup* cannot work with struct maps, because the structure needs to be
defined beforehand. It seems inappropriate, however, that pr-str emits an
invalid expression that can't then be read back: either this should fail
while printing (with the error message along the lines of "Cannot print
struct maps when *print-dup* is true"), or work iff the structure is
defined when reading.
Should this be considered a bug?
On a side note: are struct maps deprecated, or are they going to be? It
seems to be the concensus that their usage is discouraged, yet they are not
marked as deprecated in the core code.
Daniel
--
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