Îõ³h$t<Nonec-enumWrite like the following. ðenum "Foo" ''Int [''Show, ''Read, ''Eq] [ ("FooError", - 1), ("FooZero", 0), ("FooOne", 1), ("FooTwo", 2) ]  Then you get like the following. ónewtype Foo = Foo Int deriving Eq pattern FooError :: Int -> Foo pattern FooError <- Foo (- 1) where FooError = Foo (- 1) pattern FooZero :: Int -> Foo ... instance Show Foo where showsPrec = ... instance Read Foo where readPrec = ... -And you can read and show like the following. ô> Foo $ - 1 FooError > FooTwo FooTwo > Foo 3 Foo 3 > read "Foo (- 1)" :: Foo FooError > read "FooOne" :: Foo FooOne c-enum'You can define enum members separately. 5enumMems "Foo" [ ("FooThree", 3), ("FooFour", 4) ]  Safe-Inferred/       %c-enum-0.1.1.2-Ea2iqxxWnF6Bm8eKxLfyDQForeign.C.Enum Paths_c_enumenumenumMems$fShowShowReadClassesversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName