使用clojure读/读字符串函数,我如何在.clj文件中读取对象列表

时间:2011-07-27 06:47:30

标签: clojure s-expression

标题为“如果我做”

(read-string (slurp "somefile"))

这只会给我文件中的第一个对象,这意味着“somefile”如下所示:

(a obj) (b obj)

然后我只得到(一个obj)作为结果。

如何获取所有对象的列表,如下所示?

((a obj) (b obj))

感谢。

2 个答案:

答案 0 :(得分:10)

(defn read-all
  [input]
  (let [eof (Object.)]
    (take-while #(not= % eof) (repeatedly #(read input false eof)))))

答案 1 :(得分:5)

我通常将内容包装在一个列表中,

(read-string (str \( (slurp "somefile")  \)))