Clojure: Por que uma função deve ser `declarar 'se for chamada antes da definição no código-fonte

No Clojure, se você chamar uma função antes de sua definição, por exemplo,

(foo (bar 'a))

(defn bar [] ...)

não é compilado. Deve-se adicionar

(declare bar)

antes(foo (bar 'a)). Por que Clojure é projetado como esse? Quero dizer, na maioria das linguagens, exceto em C / C ++, como Java, Python, PHP, Scala, Haskell ou mesmo outros Lisps, especialmente em linguagens de tipo dinâmico, a declaração de função não é necessária, ou seja, a definição da função pode ser colocada antes ou depois de uma chamada. Eu sinto desconfortável de usar.

questionAnswers(1)

yourAnswerToTheQuestion