2009-12-09 58 views
4

我有以下形式的Clojure的数据结构:打印和读取文件列表中的Clojure

{:富“( “条”, “BLAT”)}

,并尝试使用各种pr/prn/print将它们写入文件。然而,每次的结构如下

{:FOO(“酒吧”“BLAT”)}

然后当我尝试使用负载文件中它来阅读,我得到一个错误如:

java.lang.ClassCastException:java.lang.String中不能转换到clojure.lang.IF N(集结state.clj:79)

PR有可能当列表被读取时正在被评估为函数调用。有没有办法用引用的表格将结构写出来?

感谢, 尼克

回答

8

印刷的逆通常是看书,不加载。

user> (read-string "{:foo (\"bar\" \"blat\")}") 
{:foo ("bar" "blat")} 

如果您确实需要打印可加载代码,则需要引用两次。

user> (pr-str '{:foo '("bar" "blat")}) 
"{:foo (quote (\"bar\" \"blat\"))}" 

user> (load-string (pr-str '{:foo '("bar" "blat")})) 
{:foo ("bar" "blat")} 
+0

太好了,非常感谢! – eldoctoro 2009-12-09 18:39:47