С помощью функции чтения / чтения строки clojure, как мне прочитать в файле .clj список объектов - PullRequest
3 голосов
/ 27 июля 2011

Как под названием, если я делаю

(read-string (slurp "somefile"))

Это даст мне только первый объект в файле, то есть, если «somefile» будет таким:

(a obj) (b obj)

Тогда я получаю только (объект) как результат.

Как мне получить список всех объектов, как это?

((a obj) (b obj))

Спасибо.

Ответы [ 2 ]

10 голосов
/ 27 июля 2011
(defn read-all
  [input]
  (let [eof (Object.)]
    (take-while #(not= % eof) (repeatedly #(read input false eof)))))
5 голосов
/ 27 июля 2011

Я обычно упаковываю вещи в список,

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