【发布时间】:2019-12-11 05:53:28
【问题描述】:
所以我想为我的不同type 和data 对象制作某种接口。所以我有
data Tile = Tile {
coord :: Coord,
fixed :: Bool,
wiel :: Bool
} deriving (Show)
type Source = (Coord , Bool)
type Sink = (Coord , Bool)
并且想为所有这些创建一个全局接口,所以我希望该接口有另一个字段,rotating :: Bool,然后是 Tile 或 Source 或 Sink。
如果他们在哪里都实现了相同的接口,那么他们就有了额外的字段。这样我也可以将它们放在我也需要的列表中。 (甚至可能是一个Nothing 选项,以防万一我遍历列表时那里没有任何东西)。
我首先尝试在没有像这样的额外字段的情况下这样做
data newInterface = Source | Sink | Tile | Nothing
但是这不起作用,因为我收到错误 “Tile defined multiple times”。
我将如何解决这个问题?谢谢
【问题讨论】:
-
为什么需要将它们放在一个列表中?你确定你需要那个吗?
-
我想为游戏制作一个充满这些对象的二维网格
标签: list haskell types interface algebraic-data-types