2016-11-16 4 views
2

私はどのように私は、暗黙的にその前の指定された要素にアクセスすることができ、このデータにdata MonthData = Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec deriving (Eq, Show, Enum, Ord)アクセス「データ」の次の要素が

を定義していますか?

たとえば、私はを持っていると私は明示的にを入力せずに2月にアクセスする2月

乾杯

答えて

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。たぶん、そのスレッドからNeil Brownのソリューションを 'nextMonth'として追加してください。 – jpath

1

Enumのクラス機能は、succです。

関連する問題