2016-11-16 2 views
2

Я определил эти данные data MonthData = Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec deriving (Eq, Show, Enum, Ord)Доступ следующий элемент данных «»

Как я могу неявно доступ к элементу с учетом его предыдущего?

Например, у меня есть Ян и я хочу, чтобы получить доступ к фев без явного набрав Фев

Приветствия

ответ

9

Вы попросили компилятор сделать вывод об 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://stackoverflow.com/questions/5684049/is-there-some-way-to-define-an-enum-in-haskell-that-wraps-around. Возможно, добавьте решение Нила Брауна из этой темы как 'nextMonth'. – jpath

Смежные вопросы