una pregunta rápida mientras se mira en Clojure ....Clojure Cadena Valores devueltos
Dada la siguiente sesión REPL:
Clojure 1.2.0
user=> "bar"
"bar"
user=> (print "bar")
barnil
user=> (defn foo [] ("bar"))
#'user/foo
user=> (foo)
java.lang.ClassCastException: java.lang.String cannot be cast to clojure.lang.IFn (NO_SOURCE_FILE:0)
user=> (print foo)
#<user$foo [email protected]>nil
user=> (print (foo))
java.lang.ClassCastException: java.lang.String cannot be cast to clojure.lang.IFn(NO_SOURCE_FILE:0)
¿Por qué no es la "barra" Cadena mostrado por la función de impresión ? Parece que el lector intenta resolver el valor de retorno de foo (que parece ser una cadena) como una función. ¿Cómo se debe definir que la impresión escriba la cadena en la línea de comandos?
tuve problemas con la definición de un cwd * * método en la raíz de mi proyecto. Llamar a '(str cwd" src/foo.txt ")' confundió * cwd * como un objeto de función de primera clase, devolviendo '" [email protected]/foo.txt "'. Cambiarlo a '(str (cwd)" src/foo.txt ")' funciona como se esperaba. Ahora entiendo que en un lenguaje imperativo (Python), esta es la diferencia entre la instrucción 'len' y la operación' len() '. – Droogans