3

如标题,如果我这样做

(read-string (slurp "somefile"))

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

(a obj) (b obj)

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

我如何获得所有对象的列表,像这样?

((a obj) (b obj))

谢谢。

4

2 回答 2

10
(defn read-all
  [input]
  (let [eof (Object.)]
    (take-while #(not= % eof) (repeatedly #(read input false eof)))))
于 2011-07-27T07:09:56.380 回答
5

我通常将东西包装在一个列表中,

(read-string (str \( (slurp "somefile")  \)))
于 2011-07-27T07:28:10.970 回答