12

我试图了解如何让 eval 函数读取字符串并评估字符串内的内容。

目前我知道

> (eval '(+ 1 2))
   3

但我对球拍的使用并不了解。所以目前我正试图得到它,以便我可以做到这一点:

> (eval "(+ 1 2)")
   3

任何有用资源的建议或链接将不胜感激。

4

1 回答 1

19

您想readopen-input-string. 像这样:

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

您还可以使用with-input-from-string

-> (with-input-from-string "(+ 1 2)"
     (lambda () (eval (read))))
3
于 2012-05-01T14:50:01.857 回答