Dear list, I am writing some functions to serialize and deserialize clojure data structures, but somehow they do not work and I am stuck.
The functions are as follows: (use 'clojure.contrib.duck-streams) (defn ser "Returns the string serialization of object o." [o] (binding [*print-dup* true] (pr-str o))) (defn deser "Returns the deserialization (excecutes) of string s." [s] (load-string s)) (defn ser-to-file "Writes object o to file f." [o f] (spit f (ser o))) (defn deser-from-file "Returns object stored in file f." [f] (deser (slurp f))) With the above definitions, I can run the code below and it executes correctly: (ser-to-file [1 2 3] "my-file.txt") ;; Ok (deser-from-file "my-file.txt") ;; Ok But if instead of a small vector like [1 2 3] I use a big one (say ten thousand entries), I receive an error message: (ser-to-file (into [] (range 10000)) "my-file.txt") ;; Ok (deser-from-file "my-file.txt") ;; Error! java.lang.ClassFormatError: Invalid method Code length 89867 in class file user$eval__672 (NO_SOURCE_FILE:80) Actually, I first tried with a vector of one million entries, but it consumed a lot of memory. I started making it smaller and smaller and, on my machine, when the vector has a length of 7200, it works. But when it is 7300, the error comes up. I have tried it with clojure 1.0 and the latest 1.1 alpha in github, both Vista and Ubuntu. Looks like the problem is in the deserialization, because if I look at "my-file.txt" the vector is written correctly. I do not know what I am doing wrong. If anybody could shed some light, I would be really grateful. I am sorry if this seems like a simple issue or the solution is obvious. Thank you very much for your patience. Paul. --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---