
On Sunday 23 May 2010 15:33:58, Ivan Lazar Miljenovic wrote:
R J
writes: Say I've got a type "Month" declared as an instance of the "Enum" class, and a type "MonthPair" declared as a pair of months: data Month = January | February | March | April | May | June | July | August | September | October | November | December deriving (Eq, Enum, Ord, Show) type MonthPair = (Month, Month) deriving (Enum) The "deriving" on "MonthPair" gives me the error "parse error on input deriving'".
You can't derive instances for type aliases (as its mainly there for documentation reasons, etc.). However, pairs don't have Enum instances by default so you still can't use its instance.
If you define "data MonthPair = MonthPair Month Month" then you should be able to derive Enum.
No, per the report (http://haskell.org/onlinereport/derived.html) "Derived instance declarations for the class Enum are only possible for enumerations (data types with only nullary constructors)." You can derive Enum instances for newtype wrappers around Enums with GHC (possibly others), but for types such as MonthPair you have to give the instances yourself (maybe you can let them be generated by tools like Derive).