32

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

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

3 回答 3

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

你可能永远不需要这样做。宏和 fns 使这种事情在 99% 的时间里都是不必要的。这非常脆弱,如果这些字符串来自用户输入等,则可能是不安全的。

于 2009-12-11T02:36:59.243 回答
30
(load-string "(+ 1 2)")
于 2009-12-24T17:38:50.507 回答
1

它必须有多相似?Clojureeval在列表上工作,所以:

(eval (list + 1 2)) #=> 3
于 2009-12-11T02:29:48.977 回答