
Hi, I've created an instance of Enum that repeats the same elements when it gets to the end: module Music.Note.Name where data Name = C | D | E | F | G | A | B deriving (Show, Eq) instance Enum Name where toEnum 0 = C toEnum 1 = D toEnum 2 = E toEnum 3 = F toEnum 4 = G toEnum 5 = A toEnum 6 = B toEnum i = toEnum $ i `mod` 7 fromEnum C = 0 fromEnum D = 1 fromEnum E = 2 fromEnum F = 3 fromEnum G = 4 fromEnum A = 5 fromEnum B = 6 enumFromTo x y = map toEnum [a .. b'] where a = fromEnum x b = fromEnum y b' = if a <= b then b else b + 7 enumFromThen x1 x2 = error "enumFromThen not supported for Music.Note.Name" enumFromThenTo x1 x2 y = error "enumFromThenTo not supported for Music.Note.Name" Does this violate any implicit rules that an Enum instance should follow? Is there a better way to do this? Thanks, Patrick -- ===================== Patrick LeBoutillier Rosemère, Québec, Canada