title: Are closures a violation of the functional programming paradigm?
body: <p>Functional programming "avoids state and mutable data". </p>
  
  <p>Closures hide state by binding their lexical environment and are thus closed over their free <strong>variables</strong>. </p>
  
  <p>How is Haskell purely-functional if it supports closures? Don't they break referential transparency?</p>