He estado trabajando en Clojure question 135 Infix Calculator, básicamente un infija simplificada para prefijar calculadora aritmética:¿Cómo convertir una cadena a una función en Clojure?
(= 7 (__ 2 + 5))
He resuelto el problema como se especifica. Pero eso me hizo preguntarme: ¿y si el argumento hubiera sido suministrado como una cadena? ¿Cómo lo haría funcionar?
(= 7 (__ "2 + 5"))
Obviamente me gustaría empezar con un dividir, a continuación, Munch a través del resultado:
(clojure.string/split "2 + 5" #"\s")
user=> ["2" "+" "5"]
Pero ¿cómo iba a convertir el "+" para una llamada de función? Esto no va a funcionar:
("+" 2 5)
user=> java.lang.ClassCastException: java.lang.String cannot be
cast to clojure.lang.IFn <snip>
Ilustración buscó ....
Genial, gracias dAni! –