2
我定義這個數據data MonthData = Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec deriving (Eq, Show, Enum, Ord)
訪問「數據」的下一個元素
我如何隱含訪問一個元素賦予其前一個?
舉例來說,我有一個揚,我想訪問月沒有明確鍵入二月
乾杯
我定義這個數據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
您使用類函數Enum
:succ。
相關:http://stackoverflow.com/questions/5684049/is-there-some-way-to-define-an-enum-in-haskell-that-wraps-around。也許可以將Neil Brown的解決方案從該主題添加爲「nextMonth」。 – jpath