Clojure: ¿Por qué una función debe ser 'declarar' si se llama antes de la definición en el código fuente?
En Clojure, si llama a una función antes de su definición, p.
(foo (bar 'a))
(defn bar [] ...)
No está compilado. Uno debe agregar
(declare bar)
antes de(foo (bar 'a))
. ¿Por qué Clojure está diseñado así? Quiero decir, en la mayoría de los lenguajes, excepto C / C ++, como Java, Python, PHP, Scala, Haskell o incluso otros Lisps, especialmente en lenguajes de tipo dinámico, la declaración de función no es necesaria, es decir, la definición de función podría ser antes o después de una llamada. Me resulta incómodo de usar.