【发布时间】:2009-06-24 05:16:49
【问题描述】:
这可能是另一个简单的 Haskell 问题。如果我有一些“嵌套”数据类型,例如在这个示例代码中:
data Place = Country
| State
| City String
deriving Show
data State = California
| NewYork
deriving Show
data Country = USA
| Canada
deriving Show
我可以合法地制作一个列表,例如 [Country] 类型的 [USA, Canada],或 [State] 类型的 [California, NewYork],或 [Place] 类型的 [City "a", City "b"] ].
我必须做什么才能制作 [USA, NewYork] 之类的列表?纽约是一个地方的州,美国是一个地方的国家,但 ghci 看到美国,所以它假设我正在制作一个国家列表(纽约是一个州,所以列表失败)。
我认为我需要某种方法将国家或州投射到某个地方,但我不知道如何实现这一点。
我试图避免将包含在 State 和 Country 中的数据放入 Place 类型中,我知道这会使其工作,但我有大量的真实数据,我不想像这样混淆那个。
【问题讨论】: