Если вы хотите считать данные, ранее записанные в файл Clojure, в виде литерала, вам нужно использовать read
или read-string
вместо load-file
:
(with-open [fd (java.io.PushbackReader.
(io/reader (io/file "/path/to/file")))]
(read fd))
Вы можете позвонитьread
несколько раз для чтения последовательных форм (конечно, при условии, что вы удерживаете Reader
открытым).
Это не требует оценки, за исключением случаев, когда во входном потоке возникает макрос чтения #=
в этом случае форма, следующая непосредственно за ней, оценивается во время чтения и заменяется результатом в выводе read
(например, (read-string "#=(+ 1 2)")
возвращает 3
).Чтобы запретить оценку #=
префиксных форм, связывайте *read-eval*
с false
.