When I want to read in an S-expression stored in a file into a running Common Lisp program, I do the following:
(defun load-file (filename)
"Loads data corresponding to a s-expression in file with name FILENAME."
(with-open-file (stream filename)
(read stream)))
If, for example, I have a file named foo.txt that contains the S-expression (1 2 3), the above function will return that S-expression if called as follows: (load-file "foo.txt").
I’ve been searching and searching and have not found an equally elegant solution in Clojure. Any ideas?
Thanks!
You can do e.g.
Note that you’ll likely want to rebind
*read-eval*tofalsefirst. Also note that the above works with current contrib HEAD (and will almost certainly work in 1.2 when it’s released); for Clojure 1.1, the same functionality is available in theclojure.contrib.duck-streamsandclojure.contrib.java-utilsnamespaces.