views:

64

answers:

1

Hi, I've been playing with newtype wrappers for my indexes to avoid bugs, and I have some code like this:

{-# LANGUAGE GeneralizedNewtypeDeriving #-}

newtype PersonIdx = PersonIdx Int
  deriving (Enum, Eq, Integral, Num, Ord, Real, Show)

To derive Integral, one must derive all its dependencies as well (hence the above list of type-classes).

Is there a way to make it derive all the dependencies of Integral along with it? I would imagine something like:

newtype PersonIdx = PersonIdx Int
  deriving (Integral(..))
+4  A: 

No, there is no shortcut. You'll have to derive from all dependent typeclasses explicitly, but can easily find these by typing :i Integral in ghci.

Dario
I wonder if there's a principled reason for this, or simply that no one has implemented the shortcut in question.
Novelocrat
@Dario: although one can probably create some TH shortcut..
yairchu
It is somewhat in the philosophy of Haskell that everything be explicit. There are very few "shortcuts" in the language, and this example is no exception.
Martijn