在Haskell中实现自定义数据类型的Enum实例行为



我在Haskell中有一个自定义数据类型来表示交通灯

data TrafficLight = Red | Yellow | Green  

我正在尝试实现Enum的功能使用实例块的类型类:

instance Enum TrafficLight where
succ Green = Yellow
succ Yellow = Red
succ Red = Green
pred Green = Red
pred Yellow = Green
pred Red = Yellow

predsuc按预期工作,但是我也想实现范围函数,这样我就可以调用

ghci> [Green .. Red]

并返回

[Green,Yellow,Red]

我理解这个功能似乎来自enumFromEnum中的函数但是我不完全确定如何像我实现predsucc那样实现它。

haskell.org上对enumFrom的描述给出了以下可能的定义enumFrom n = n : enumFrom (succ n)

相关内容

  • 没有找到相关文章

最新更新