Haskell で、コンポーネントの値によってデータ型を制限する方法はありますか? 私は例を起草しました。チェッカー ゲームがあるとします。チェッカーは、黒または白のいずれかのタイプです。
data CheckerType = BlackChecker | WhiteChecker deriving (Eq)
data Checker = Checker CheckerType Int
チェッカー ゲームのゲーム ボードには、ブラック チェッカーとホワイト チェッカーのセットが含まれます。
data GameBoard = GameBoard ([Checker]) ([Checker])
前の宣言で、最初の [Checker] のチェッカーを CheckerType 黒にし、2 番目のチェッカーを反対のタイプにする方法はありますか?