gpt4 book ai didi

haskell - 有没有某种方法可以在 haskell 中定义一个环绕的枚举?

转载 作者:行者123 更新时间:2023-12-02 11:36:50 27 4
gpt4 key购买 nike

假设我正在设计一款大富翁游戏:

data Board = GO | A1 | CC1 | A2 | T1 | R1 | B1 | CH1 | B2 | B3 | 
JAIL | C1 | U1 | C2 | C3 | R2 | D1 | CC2 | D2 | D3 |
FP | E1 | CH2 | E2 | E3 | R3 | F1 | F2 | U2 | F3 |
G2J | G1 | G2 | CC3 | G3 | R4 | CH3 | H1 | T2 | H2
deriving (Show, Enum, Eq)

我想要:

succ H2 == GO

但是:

*** Exception: succ{Board}: tried to take `succ' of last tag in enumeration

是否有一个类型类用于表达环绕的枚举?

最佳答案

比 nanothief 更简单的解决方案:

nextBoard :: Board -> Board
nextBoard H2 = GO
nextBoard t = succ t

我认为您无法直接使用 Enum 来实现您想要的目的,但此解决方案可以快速包装它以形成您想要的行为。

关于haskell - 有没有某种方法可以在 haskell 中定义一个环绕的枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5684049/

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