title: how does 'undefined' work in Haskell
body: <p>I'm curious about the 'undefined' value in Haskell. Its interesting because you can put it just about anywhere, and Haskell will be happy. The following are all a-ok</p>
  
  <pre><code>[1.0, 2.0, 3.0 , undefined]  ::[Float]
  [1, 2 ,3 undefined, 102312] :: [Int]
  ("CATS!", undefined)  :: (String, String)
  ....and many more
  </code></pre>
  
  <p>How does undefined work under the hood? What makes it possible to have data that is of every data type? Would it be possible for me to define a value like this that I can put everywhere, or is this some special case?</p>