我有一段看起来像这样的代码:
data SomeData = A | B | C | D | E deriving (Show, Enum)
我希望能够轻松地将某些值映射到这些类型。说我想要
char
s 映射到 SomeData
类型,我可能会这样做:mappings = zip "abcde" [A, B, C, D, E]
这将产生
[('a',A),('b',B)...]
等等。我希望 Enum
类型类可能允许我通过使用一些便利功能将数据类型转换为我上面描述的列表( [A, B, C, D, E]
)轻松地做到这一点。标准库中有这样的功能吗?或者如果我想使用这样的东西,我需要自己定义吗?
最佳答案
你可以更通用:
-- added deriving Bounded
data SomeData = A | B | C | D | E deriving (Show, Enum, Bounded)
fullRange :: (Bounded a, Enum a) => [a]
fullRange = enumFromTo minBound maxBound
然后调用
fullRange
(如果需要,使用显式类型注释:fullRange :: [SomeData]
)。
关于haskell - 有没有一种简单的方法可以将派生 Enum 的数据类型转换为列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13019386/