gpt4 book ai didi

Haskell 枚举从 1 开始

转载 作者:行者123 更新时间:2023-12-02 02:21:44 26 4
gpt4 key购买 nike

考虑以下在 Haskell 中创建 start-at-1 枚举的方法:

data Level = Lower | Middle | Upper
deriving (Show, Eq, Ord)

instance Enum Level where
toEnum 1 = Lower
toEnum 2 = Middle
toEnum 3 = Upper

fromEnum Lower = 1
fromEnum Middle = 2
fromEnum Upper = 3

instance Bounded Level where
minBound = Lower
maxBound = Upper

我不想做以下事情:

data Level = DontUseThis | Lower | Middle | Upper
deriving (Show, Eq, Ord)

如果没有,是否有更直接的方法来做到这一点?

最佳答案

首先,您不需要自己定义Bounded 实例。如果将 Bounded 添加到派生类型类列表中,您应该会得到相同的行为。

其次,我能想到的最直接的方法是简单地派生Enum,然后定义您自己的翻译函数。所以像这样:

data Level = Lower | Middle | Upper
deriving (Show, Eq, Ord, Bounded, Enum)

toEnum' x = toEnum (x - 1)
fromEnum' x = (fromEnum x) + 1

关于Haskell 枚举从 1 开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7816700/

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