访问"数据"的下一个元素

Pie*_* P. 2 haskell functional-programming

我已经定义了这些数据 data MonthData = Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec deriving ( Eq, Show, Enum, Ord )

如何隐藏访问前一个元素?

例如,我有一个Jan,我想访问Feb而不明确键入Feb

干杯

Mic*_*ael 10

您要求编译器推断出一个Enum实例,所以

>>> :t succ 
succ :: Enum a => a -> a
>>> succ Jan
Feb
Run Code Online (Sandbox Code Playgroud)

但请注意

>>> succ Dec 
*** Exception: succ{MonthData}: tried to take `succ' of last tag in enumeration
Run Code Online (Sandbox Code Playgroud)

  • 相关:http://stackoverflow.com/questions/5684049/is-there-some-way-to-define-an-enum-in-haskell-that-wraps-around.也许将Neil Brown的解决方案从该线程添加为"nextMonth". (3认同)