是否可以从Haskell中的数据类型的可能值生成列表?

时间:2013-08-14 08:29:27

标签: haskell types list-comprehension

可以根据类型的可能值生成列表吗? E.g。

data Shape = Circle | Rectangle | Triangle | Pentagon

[Circle,Rectangle,Triangle,Pentagon]

1 个答案:

答案 0 :(得分:20)

是的,它可以。这是EnumBounded类型类的义务,例如

λ data Shape = Circle | Rectangle | Triangle | Pentagon deriving (Show, Enum, Bounded)
λ [minBound .. maxBound] :: [Shape]
[Circle,Rectangle,Triangle,Pentagon]
λ [minBound ..] :: [Shape]
[Circle,Rectangle,Triangle,Pentagon]