clojure metaprogramming evaluation

¿Cómo evalúas una cadena como expresión de clojure?



metaprogramming evaluation (3)

¿Qué tan similar tiene que ser? La eval de Clojure funciona en listas, por lo que:

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

¿Cómo obtendría algo similar a lo siguiente ?:

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


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


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

Probablemente nunca deberías necesitar hacer esto. Las macros y fns hacen que este tipo de cosas sean innecesarias el 99% del tiempo. Esto es bastante frágil y puede ser inseguro si estas cadenas provienen de la entrada del usuario, y así sucesivamente.