32

次のようなものを取得するにはどうすればよいですか?:

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

3 に答える 3

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

おそらくこれを行う必要はありません。マクロと fn は、この種のことを 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 に答える