[Haskell-cafe] Automatically Deriving Numeric Type Class Instances

Jake jake.waksbaum at gmail.com
Fri Apr 22 14:23:12 UTC 2016

Is it possible to automatically derive instances of Numeric type classes
like Num, Fractional, Real, Floating, etc?

I currently have two datatypes, Pair and Triple, that are defined like this:

data Pair a = Pair a a
data Triple a = Triple a a a

I wrote these pretty trivial instances for Num and Floating:

instance Num a => Num (Pair a) where
  (+) = liftA2 (+)
  (*) = liftA2 (*)
  abs = liftA abs
  negate = liftA negate
  signum = liftA signum
  fromInteger = pure . fromInteger

instance Fractional a => Fractional (Pair a) where
  (/) = liftA2 (/)
  recip = liftA recip
  fromRational = pure . fromRational

and practically identical instances for Triple as well.

Is there anyway to have GHC derive these instances and the other numeric
type classes?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20160422/81d09ade/attachment.html>

More information about the Haskell-Cafe mailing list