代码之家  ›  专栏  ›  技术社区  ›  jkndrkn

Clojure:相当于普通的Lisp读取函数?

  •  11
  • jkndrkn  · 技术社区  · 16 年前

    如果要将存储在文件中的S表达式读入正在运行的公共Lisp程序,请执行以下操作:

    (defun load-file (filename)
      "Loads data corresponding to a s-expression in file with name FILENAME."
      (with-open-file (stream filename)
        (read stream)))
    

    例如,如果我有一个名为 foo.txt 包含S表达式的 (1 2 3) (load-file "foo.txt") .

    谢谢!

    2 回复  |  直到 16 年前
        1
  •  8
  •   Michał Marczyk    16 年前

    (require '[clojure.contrib.io :as io])
    
    (io/with-in-reader (io/file "foo.txt") (read))
    ; => (1 2 3)
    

    请注意,您可能需要重新绑定 *read-eval* 到 false clojure.contrib.duck-streams clojure.contrib.java-utils 名称空间。

        2
  •  6
  •   Community Mohan Dere    9 年前

    我在这里找到了解决办法: How do you evaluate a string as a clojure expression?

    (read-string (slurp "foo.txt"))