title: Is there a data structure where using bottom is needed to have a correct type?
body: <p>Is there a type in Haskell where is absolutely needed to use bottom value i.e. <code>undefined</code>? Or it is just used to get the code compiling while the code is in process?</p>
  
  <p>I thought maybe exist a rare type  that needs <code>undefined</code> to finish its construction, lists needs only <code>1:[]</code> and that's it, but maybe a data type is complex enough to need undefined` to finish its construction.</p>
  
  <p>Is there more complex constructor that need <code>undefined</code> to be typed?</p>