title: Why is Clojure dynamically typed?
body: <p>One thing I like very much is reading about different programming languages. Currently, I'm learning Scala but that doesn't mean I'm not interested in Groovy, Clojure, Python, and many others. All these languages have a unique look and feel and some characteristic features. In the case of Clojure I don't understand one of these design decisions. As far as I know, Clojure puts great emphasis on its functional paradigm and pretty much forces you to use immutable "variables" wherever possible. So if half of your values are immutable, why is the language dynamically typed?</p>
  
  <p>The Clojure website says:</p>
  
  <blockquote>
    <p>First and foremost, Clojure is dynamic. That means that a Clojure program is not just something you compile and run, but something with which you can interact.</p>
  </blockquote>
  
  <p>Well, that sounds completely strange. If a program is compiled you can't change it anymore. Sure you can "interact" with it, that's what UIs are used for but the website certainly doesn't mean a neat "dynamic" GUI.</p>
  
  <p><strong>How does Clojure benefit from dynamical typing</strong></p>
  
  <p>I mean the special case of Clojure and not general advantages of dynamic typing.</p>
  
  <p><strong>How does the dynamic type system help improve functional programming</strong></p>
  
  <p>Again, I know the pleasure of not spilling "int a;" all over the source code but type inference can ease a lot of the pain. Therefore I would just like to know how dynamic typing supports the concepts of a functional language.</p>