So, I've hit a problem and I'm hoping for some help on how to solve it. The problem is that prn and read are not perfect duals- that is, not everything that prn produces can be read in by read. The specific case I'm hitting is with double precision infinities and NaNs. pr just calls .toString on doubles, which for infinities and nans returns the string "Infinity" or "NaN":
user=> (with-out-str (pr Double/POSITIVE_INFINITY)) > "Infinity" > user=> (with-out-str (pr Double/NEGATIVE_INFINITY)) > "-Infinity" > user=> (with-out-str (pr Double/NaN)) > "NaN" > user=> > > The problem is, when you try to read these values back in, they're interpreted as symbols, not as numbers: user=> (class (with-in-str (with-out-str (pr Double/POSITIVE_INFINITY)) > (read))) > clojure.lang.Symbol > user=> > I'm not sure what the "right" way to solve it, but I'm inclined to advocate that Infinity and NaN should be reserved keywords recognized by the reader. Or possibly Clojure should automatically define the symbols Infinity and NaN to have the correct values. I'm not sure. Brian --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---