title: Haskell lists of datatypes
body: <p>This is probably another easy Haskell question.  If I have some "nested" data types, such as in this example code:</p>
  
  <pre><code>data Place = Country
             | State
             | City String
             deriving Show
  
  data State = California
             | NewYork
             deriving Show
  
  data Country = USA
               | Canada
               deriving Show
  </code></pre>
  
  <p>I can legally make a list such as [USA, Canada] of type [Country], or [California, NewYork] of type [State], or [City "a", City "b"] of type [Place].</p>
  
  <p>What do I have to do to make a list such as [USA, NewYork]?  NewYork is a State which is a Place, and USA is a Country which is a Place, but ghci sees USA so it assumes I am making a list of Countrys (and NewYork is a State, so the list fails).</p>
  
  <p>I think I need some way to cast a Country or State to a Place, but I'm at a loss on how to accomplish this.</p>
  
  <p>I'm trying to avoid throwing the data contained within State and Country into the Place type, which I know would make it work, but I've got a decent amount of real data that I'd rather not jumble up like that.</p>