Listy Haskella typów danych

To prawdopodobnie kolejne proste pytanie Haskella. Jeśli mam kilka „zagnieżdżonych” typów danych, na przykład w tym przykładzie kodu:

<code>data Place = Country
           | State
           | City String
           deriving Show

data State = California
           | NewYork
           deriving Show

data Country = USA
             | Canada
             deriving Show
</code>

Mogę zgodnie z prawem utworzyć listę, taką jak [USA, Kanada] typu [Kraj] lub [Kalifornia, Nowy Jork] typu [Państwo] lub [Miasto ”a”, Miasto „b”] typu [Miejsce].

Co muszę zrobić, aby utworzyć listę, taką jak [USA, NewYork]? NewYork jest stanem, który jest miejscem, a USA jest krajem, który jest miejscem, ale ghci widzi USA, więc zakłada, że ​​tworzę listę krajów (a NewYork jest państwem, więc lista nie działa).

Myślę, że potrzebuję jakiegoś sposobu, by rzucić Kraj lub Stan na Miejsce, ale nie mam pojęcia, jak to osiągnąć.

Staram się unikać wrzucania danych zawartych w stanie i kraju do typu miejsca, co, jak wiem, sprawi, że zadziała, ale mam przyzwoitą ilość prawdziwych danych, których wolałbym nie mieszać w ten sposób.

questionAnswers(3)

yourAnswerToTheQuestion