访问“数据”的下一个元素

问题描述:

我定义这个数据data MonthData = Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec deriving (Eq, Show, Enum, Ord)访问“数据”的下一个元素

我如何隐含访问一个元素赋予其前一个?

举例来说,我有一个,我想访问没有明确键入二月

干杯

你问的编译器来推断Enum实例,因此

>>> :t succ 
succ :: Enum a => a -> a 
>>> succ Jan 
Feb 

但是请注意

>>> succ Dec 
*** Exception: succ{MonthData}: tried to take `succ' of last tag in enumeration 
+3

相关:http://*.com/questions/5684049/is-there-some-way-to-define-an-enum-in-haskell-that-wraps-around。也许可以将Neil Brown的解决方案从该主题添加为“nextMonth”。 – jpath

您使用类函数Enumsucc