如何将字符串评估为clojure表达式?

时间:2009-12-11 02:22:47

标签: clojure metaprogramming evaluation

我如何获得类似以下的内容?:

(evaluate-text "(+ 1 2)")  ; resolves to 3

3 个答案:

答案 0 :(得分:31)

user> (eval (read-string "(+ 1 2)"))
3

你可能不需要这样做。宏和fns 99%的时间都不需要这种东西。这非常脆弱,如果这些字符串来自用户输入,则可能不安全,等等。

答案 1 :(得分:28)

(load-string "(+ 1 2)")

答案 2 :(得分:0)

它有多相似? Clojure的eval适用于列表,所以:

(eval (list + 1 2)) #=> 3