从Clojure中的文件打印和读取列表

时间:2009-12-09 16:00:31

标签: clojure

我有一个Clojure数据结构:

  

{:foo'(“bar”“blat”)}

并尝试使用各种pr / prn / print将它们写入文件。但是,每次将结构写为

  

{:foo(“bar”“blat”)}

然后当我尝试使用load-file读取它时,我收到一个错误,例如:

  

java.lang.ClassCastException:java.lang.String无法强制转换为clojure.lang.IF   n(build-state.clj:79)

可能是因为列表在读取时被评估为函数调用。有没有办法用引号中的列表写出结构?

感谢, 尼克

1 个答案:

答案 0 :(得分: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")}