Oops! Small bug. See below. Dean Herington wrote:
> You can't derive Enum Player automatically, but you can program it. Here's one > way how, using shorter example names. > > -- Dean > > data E1 = E1a | E1b | E1c deriving (Enum, Bounded, Show, Read) > data E2 = E2a | E2b | E2c deriving (Enum, Bounded, Show, Read) > > data E = E1 E1 | E2 E2 deriving (Show, Read) > > instance Enum E where > fromEnum (E1 e1) = fromEnum e1 > fromEnum (E2 e2) = size_E1 + fromEnum e2 > toEnum i | i < size_E1 = E1 (toEnum i) > | otherwise = E2 (toEnum (i - size_E1)) > > instance Bounded E where > minBound = toEnum 0 > maxBound = toEnum (size_E1 + size_E2) Should be: maxBound = toEnum (size_E1 + size_E2 - 1) > size_E1 = fromEnum (maxBound :: E1) + 1 > size_E2 = fromEnum (maxBound :: E2) + 1 _______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell
