Haskellでは、コンポーネントの値によってデータ型を制限する方法はありますか?私は例を起草しました。チェッカーゲームがあるとします。チェッカーは黒または白のいずれかのタイプです。Haskellのデータ宣言を型の値でバインドすることができます
data CheckerType = BlackChecker | WhiteChecker deriving (Eq)
data Checker = Checker CheckerType Int
チェッカーゲームのゲームボードには、ブラックチェッカーとホワイトチェッカーのセットが含まれています。前の宣言において
data GameBoard = GameBoard ([Checker]) ([Checker])
、最初の[チェッカー]でチェッカーを適用する方法はCheckerType黒色であることがあり、第二は、対向型ですか?これらのいずれも任意の値を持っていることを
data Black
data White
注:
[正の整数型]の複製が可能です(http://stackoverflow.com/questions/11910143/positive-integer-type) – dave4420