title: Functional Programming and Type Systems
body: <p>I have been learning about various functional languages for some time now including Haskell, Scala and Clojure. Haskell has a very strict and well-defined static type system. Scala is also statically typed. Clojure on the other hand, is dynamically typed.</p>
  
  <p>So my questions are</p>
  
  <ol>
  <li>What role does the type system play in a functional language? </li>
  <li>Is it necessary for a language to have a type system for it to be functional?</li>
  <li>How is the "functional" level of a language related to the kind of the type system of the language?</li>
  </ol>