在 Haskell 中,有没有办法通过其组件的值来限制数据类型?我已经起草了一个例子。假设你有一个跳棋游戏。检查器是黑色或白色类型的。
data CheckerType = BlackChecker | WhiteChecker deriving (Eq)
data Checker = Checker CheckerType Int
棋盘游戏的棋盘包含一组黑棋和白棋。
data GameBoard = GameBoard ([Checker]) ([Checker])
在前面的声明中,有没有办法强制第一个 [Checker] 中的 Checker 为黑色 CheckerType,而第二个为相反类型?