我想要一种数据类型来表示可以通过特定名称寻址的有限整数集.我认为最好的方法是使用Enum.
但是,有一个小问题.我知道定义Enum的唯一方法是这样的:
data MyDataType = Foo | Bar | Baz
instance Enum MyDataType
toEnum 0 = Foo
toEnum 1 = Bar
toEnum 2 = Baz
fromEnum Foo = 0
fromEnum Bar = 1
fromEnum Baz = 2
Run Code Online (Sandbox Code Playgroud)
请注意,我必须重复两次相同的对 - 一次定义整数到枚举映射,另一次定义枚举到整数映射.
有没有办法避免这种重复?