gpt4 book ai didi

Haskell,获取所有枚举值的列表而不命名它们

转载 作者:行者123 更新时间:2023-12-04 16:17:12 25 4
gpt4 key购买 nike

我有这个(并且无法更改):

data Example = Value1 | Value2 | Value3
deriving (Eq, Ord, Enum, Show)

我需要这个函数来返回数据定义中所有值的列表:
examples :: [Example]

但我不能像这样使用值的名称:
examples :: [Example]
examples = [Value1 ..]

我尝试了这样的事情,但它们不起作用:
examples :: [Example]
examples = [x | x <- Example]

谢谢你的帮助。

最佳答案

使用 toEnum 0生成第一个值,enumFrom然后生成值列表是这里没有 Bounded 的唯一方法类(class)。

例如:

generateEnumValues :: (Enum a) => [a]
generateEnumValues = enumFrom (toEnum 0)

examples :: [Example]
examples = generateEnumValues

这种方法的主要问题是不能保证 toEnum 0将始终给出第一个枚举值(我在 Enum docs page 上看不到任何此类保证)。但是,对于使用 deriving Enum 创建的任何枚举实例都是如此。 .

因此,如果可能,请添加 Bounded类到类型,只需使用 [minBound..]反而。

关于Haskell,获取所有枚举值的列表而不命名它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25924399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com