我如何获得类似以下的内容?:
(evaluate-text "(+ 1 2)") ; resolves to 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