packages feed

NumInstances 1.3 → 1.4

raw patch · 2 files changed

+115/−8 lines, 2 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

- Data.NumInstances.Function: instance Floating b => Floating (a -> b)
- Data.NumInstances.Function: instance Fractional b => Fractional (a -> b)
- Data.NumInstances.Function: instance Num b => Num (a -> b)
- Data.NumInstances.Tuple: instance (Floating a, Floating b) => Floating (a, b)
- Data.NumInstances.Tuple: instance (Floating a, Floating b, Floating c) => Floating (a, b, c)
- Data.NumInstances.Tuple: instance (Floating a, Floating b, Floating c, Floating d) => Floating (a, b, c, d)
- Data.NumInstances.Tuple: instance (Fractional a, Fractional b) => Fractional (a, b)
- Data.NumInstances.Tuple: instance (Fractional a, Fractional b, Fractional c) => Fractional (a, b, c)
- Data.NumInstances.Tuple: instance (Fractional a, Fractional b, Fractional c, Fractional d) => Fractional (a, b, c, d)
- Data.NumInstances.Tuple: instance (Num a, Num b) => Num (a, b)
- Data.NumInstances.Tuple: instance (Num a, Num b, Num c) => Num (a, b, c)
- Data.NumInstances.Tuple: instance (Num a, Num b, Num c, Num d) => Num (a, b, c, d)
+ Data.NumInstances.Function: instance GHC.Float.Floating b => GHC.Float.Floating (a -> b)
+ Data.NumInstances.Function: instance GHC.Num.Num b => GHC.Num.Num (a -> b)
+ Data.NumInstances.Function: instance GHC.Real.Fractional b => GHC.Real.Fractional (a -> b)
+ Data.NumInstances.Tuple: instance (GHC.Float.Floating a, GHC.Float.Floating b) => GHC.Float.Floating (a, b)
+ Data.NumInstances.Tuple: instance (GHC.Float.Floating a, GHC.Float.Floating b, GHC.Float.Floating c) => GHC.Float.Floating (a, b, c)
+ Data.NumInstances.Tuple: instance (GHC.Float.Floating a, GHC.Float.Floating b, GHC.Float.Floating c, GHC.Float.Floating d) => GHC.Float.Floating (a, b, c, d)
+ Data.NumInstances.Tuple: instance (GHC.Float.Floating a, GHC.Float.Floating b, GHC.Float.Floating c, GHC.Float.Floating d, GHC.Float.Floating e) => GHC.Float.Floating (a, b, c, d, e)
+ Data.NumInstances.Tuple: instance (GHC.Float.Floating a, GHC.Float.Floating b, GHC.Float.Floating c, GHC.Float.Floating d, GHC.Float.Floating e, GHC.Float.Floating f) => GHC.Float.Floating (a, b, c, d, e, f)
+ Data.NumInstances.Tuple: instance (GHC.Float.Floating a, GHC.Float.Floating b, GHC.Float.Floating c, GHC.Float.Floating d, GHC.Float.Floating e, GHC.Float.Floating f, GHC.Float.Floating g) => GHC.Float.Floating (a, b, c, d, e, f, g)
+ Data.NumInstances.Tuple: instance (GHC.Num.Num a, GHC.Num.Num b) => GHC.Num.Num (a, b)
+ Data.NumInstances.Tuple: instance (GHC.Num.Num a, GHC.Num.Num b, GHC.Num.Num c) => GHC.Num.Num (a, b, c)
+ Data.NumInstances.Tuple: instance (GHC.Num.Num a, GHC.Num.Num b, GHC.Num.Num c, GHC.Num.Num d) => GHC.Num.Num (a, b, c, d)
+ Data.NumInstances.Tuple: instance (GHC.Num.Num a, GHC.Num.Num b, GHC.Num.Num c, GHC.Num.Num d, GHC.Num.Num e) => GHC.Num.Num (a, b, c, d, e)
+ Data.NumInstances.Tuple: instance (GHC.Num.Num a, GHC.Num.Num b, GHC.Num.Num c, GHC.Num.Num d, GHC.Num.Num e, GHC.Num.Num f) => GHC.Num.Num (a, b, c, d, e, f)
+ Data.NumInstances.Tuple: instance (GHC.Num.Num a, GHC.Num.Num b, GHC.Num.Num c, GHC.Num.Num d, GHC.Num.Num e, GHC.Num.Num f, GHC.Num.Num g) => GHC.Num.Num (a, b, c, d, e, f, g)
+ Data.NumInstances.Tuple: instance (GHC.Real.Fractional a, GHC.Real.Fractional b) => GHC.Real.Fractional (a, b)
+ Data.NumInstances.Tuple: instance (GHC.Real.Fractional a, GHC.Real.Fractional b, GHC.Real.Fractional c) => GHC.Real.Fractional (a, b, c)
+ Data.NumInstances.Tuple: instance (GHC.Real.Fractional a, GHC.Real.Fractional b, GHC.Real.Fractional c, GHC.Real.Fractional d) => GHC.Real.Fractional (a, b, c, d)
+ Data.NumInstances.Tuple: instance (GHC.Real.Fractional a, GHC.Real.Fractional b, GHC.Real.Fractional c, GHC.Real.Fractional d, GHC.Real.Fractional e) => GHC.Real.Fractional (a, b, c, d, e)
+ Data.NumInstances.Tuple: instance (GHC.Real.Fractional a, GHC.Real.Fractional b, GHC.Real.Fractional c, GHC.Real.Fractional d, GHC.Real.Fractional e, GHC.Real.Fractional f) => GHC.Real.Fractional (a, b, c, d, e, f)
+ Data.NumInstances.Tuple: instance (GHC.Real.Fractional a, GHC.Real.Fractional b, GHC.Real.Fractional c, GHC.Real.Fractional d, GHC.Real.Fractional e, GHC.Real.Fractional f, GHC.Real.Fractional g) => GHC.Real.Fractional (a, b, c, d, e, f, g)

Files

NumInstances.cabal view
@@ -1,5 +1,5 @@ Name:                NumInstances-Version:             1.3+Version:             1.4 Synopsis:            Instances of numeric classes for functions and tuples Description:         Instances of numeric classes for functions and tuples.                      Import "Data.NumInstances" to get all the instances.
src/Data/NumInstances/Tuple.hs view
@@ -13,8 +13,10 @@  module Data.NumInstances.Tuple () where +-- TODO: Replace with a Template Haskell definition and applications+ lift2 :: (a->u) -> (b->v) -> (a,b) -> (u,v)-lift2 f g (a,b) = (f a, g b)+lift2 fa fb (a,b) = (fa a, fb b)  -- Equivalently, lift2 = (***) @@ -61,9 +63,9 @@   fromRational x = (fromRational x, fromRational x, fromRational x)   recip = lift3 recip recip recip --lift3 :: (a->u) -> (b->v) -> (c->w) -> (a,b,c) -> (u,v,w)-lift3 f g h (a,b,c) = (f a, g b, h c)+lift3 :: (a->u) -> (b->v) -> (c->w)+      -> (a,b,c) -> (u,v,w)+lift3 fa fb fc (a,b,c) = (fa a, fb b, fc c)  instance (Floating a, Floating b, Floating c)     => Floating (a,b,c) where@@ -82,11 +84,9 @@   acosh = lift3 acosh acosh acosh   atanh = lift3 atanh atanh atanh -- lift4 :: (a->u) -> (b->v) -> (c->w) -> (d->x)       -> (a,b,c,d) -> (u,v,w,x)-lift4 f g h k (a,b,c,d) = (f a, g b, h c, k d)+lift4 fa fb fc fd (a,b,c,d) = (fa a, fb b, fc c, fd d)  instance (Num a, Num b, Num c, Num d) => Num (a,b,c,d) where   fromInteger n = (fromInteger n, fromInteger n, fromInteger n, fromInteger n)@@ -119,6 +119,113 @@   acosh = lift4 acosh acosh acosh acosh   atanh = lift4 atanh atanh atanh atanh +lift5 :: (a->u) -> (b->v) -> (c->w) -> (d->x) -> (e->y)+      -> (a,b,c,d,e) -> (u,v,w,x,y)+lift5 fa fb fc fd fe (a,b,c,d,e) =+  (fa a, fb b, fc c, fd d, fe e)++instance (Num a, Num b, Num c, Num d, Num e) => Num (a,b,c,d,e) where+  fromInteger n = (fromInteger n, fromInteger n, fromInteger n, fromInteger n, fromInteger n)+  (a,b,c,d,e) + (a',b',c',d',e') = (a+a',b+b',c+c',d+d',e+e')+  (a,b,c,d,e) - (a',b',c',d',e') = (a-a',b-b',c-c',d-d',e-e')+  (a,b,c,d,e) * (a',b',c',d',e') = (a*a',b*b',c*c',d*d',e*e')+  negate = lift5 negate negate negate negate negate+  abs    = lift5 abs abs abs abs abs+  signum = lift5 signum signum signum signum signum++instance (Fractional a, Fractional b, Fractional c, Fractional d, Fractional e)+    => Fractional (a,b,c,d,e) where+  fromRational x = (fromRational x, fromRational x, fromRational x, fromRational x, fromRational x)+  recip = lift5 recip recip recip recip recip++instance (Floating a, Floating b, Floating c, Floating d, Floating e)+    => Floating (a,b,c,d,e) where+  pi    = (pi,pi,pi,pi,pi)+  exp   = lift5 exp exp exp exp exp+  log   = lift5 log log log log log+  sqrt  = lift5 sqrt sqrt sqrt sqrt sqrt+  sin   = lift5 sin sin sin sin sin+  cos   = lift5 cos cos cos cos cos+  sinh  = lift5 sinh sinh sinh sinh sinh+  cosh  = lift5 cosh cosh cosh cosh cosh+  asin  = lift5 asin asin asin asin asin+  acos  = lift5 acos acos acos acos acos+  atan  = lift5 atan atan atan atan atan+  asinh = lift5 asinh asinh asinh asinh asinh+  acosh = lift5 acosh acosh acosh acosh acosh+  atanh = lift5 atanh atanh atanh atanh atanh++lift6 :: (a->u) -> (b->v) -> (c->w) -> (d->x) -> (e->y) -> (f->t)+      -> (a,b,c,d,e,f) -> (u,v,w,x,y,t)+lift6 fa fb fc fd fe ff (a,b,c,d,e,f) =+  (fa a, fb b, fc c, fd d, fe e, ff f)++instance (Num a, Num b, Num c, Num d, Num e, Num f) => Num (a,b,c,d,e,f) where+  fromInteger n = (fromInteger n, fromInteger n, fromInteger n, fromInteger n, fromInteger n, fromInteger n)+  (a,b,c,d,e,f) + (a',b',c',d',e',f') = (a+a',b+b',c+c',d+d',e+e',f+f')+  (a,b,c,d,e,f) - (a',b',c',d',e',f') = (a-a',b-b',c-c',d-d',e-e',f-f')+  (a,b,c,d,e,f) * (a',b',c',d',e',f') = (a*a',b*b',c*c',d*d',e*e',f*f')+  negate = lift6 negate negate negate negate negate negate+  abs    = lift6 abs abs abs abs abs abs+  signum = lift6 signum signum signum signum signum signum++instance (Fractional a, Fractional b, Fractional c, Fractional d, Fractional e, Fractional f)+    => Fractional (a,b,c,d,e,f) where+  fromRational x = (fromRational x, fromRational x, fromRational x, fromRational x, fromRational x, fromRational x)+  recip = lift6 recip recip recip recip recip recip++instance (Floating a, Floating b, Floating c, Floating d, Floating e, Floating f)+    => Floating (a,b,c,d,e,f) where+  pi    = (pi,pi,pi,pi,pi,pi)+  exp   = lift6 exp exp exp exp exp exp+  log   = lift6 log log log log log log+  sqrt  = lift6 sqrt sqrt sqrt sqrt sqrt sqrt+  sin   = lift6 sin sin sin sin sin sin+  cos   = lift6 cos cos cos cos cos cos+  sinh  = lift6 sinh sinh sinh sinh sinh sinh+  cosh  = lift6 cosh cosh cosh cosh cosh cosh+  asin  = lift6 asin asin asin asin asin asin+  acos  = lift6 acos acos acos acos acos acos+  atan  = lift6 atan atan atan atan atan atan+  asinh = lift6 asinh asinh asinh asinh asinh asinh+  acosh = lift6 acosh acosh acosh acosh acosh acosh+  atanh = lift6 atanh atanh atanh atanh atanh atanh++lift7 :: (a->u) -> (b->v) -> (c->w) -> (d->x) -> (e->y) -> (f->t) -> (g->z)+      -> (a,b,c,d,e,f,g) -> (u,v,w,x,y,t,z)+lift7 fa fb fc fd fe ff fg (a,b,c,d,e,f,g) =+  (fa a, fb b, fc c, fd d, fe e, ff f, fg g)++instance (Num a, Num b, Num c, Num d, Num e, Num f, Num g) => Num (a,b,c,d,e,f,g) where+  fromInteger n = (fromInteger n, fromInteger n, fromInteger n, fromInteger n, fromInteger n, fromInteger n, fromInteger n)+  (a,b,c,d,e,f,g) + (a',b',c',d',e',f',g') = (a+a',b+b',c+c',d+d',e+e',f+f',g+g')+  (a,b,c,d,e,f,g) - (a',b',c',d',e',f',g') = (a-a',b-b',c-c',d-d',e-e',f-f',g-g')+  (a,b,c,d,e,f,g) * (a',b',c',d',e',f',g') = (a*a',b*b',c*c',d*d',e*e',f*f',g*g')+  negate = lift7 negate negate negate negate negate negate negate+  abs    = lift7 abs abs abs abs abs abs abs+  signum = lift7 signum signum signum signum signum signum signum++instance (Fractional a, Fractional b, Fractional c, Fractional d, Fractional e, Fractional f, Fractional g)+    => Fractional (a,b,c,d,e,f,g) where+  fromRational x = (fromRational x, fromRational x, fromRational x, fromRational x, fromRational x, fromRational x, fromRational x)+  recip = lift7 recip recip recip recip recip recip recip++instance (Floating a, Floating b, Floating c, Floating d, Floating e, Floating f, Floating g)+    => Floating (a,b,c,d,e,f,g) where+  pi    = (pi,pi,pi,pi,pi,pi,pi)+  exp   = lift7 exp exp exp exp exp exp exp+  log   = lift7 log log log log log log log+  sqrt  = lift7 sqrt sqrt sqrt sqrt sqrt sqrt sqrt+  sin   = lift7 sin sin sin sin sin sin sin+  cos   = lift7 cos cos cos cos cos cos cos+  sinh  = lift7 sinh sinh sinh sinh sinh sinh sinh+  cosh  = lift7 cosh cosh cosh cosh cosh cosh cosh+  asin  = lift7 asin asin asin asin asin asin asin+  acos  = lift7 acos acos acos acos acos acos acos+  atan  = lift7 atan atan atan atan atan atan atan+  asinh = lift7 asinh asinh asinh asinh asinh asinh asinh+  acosh = lift7 acosh acosh acosh acosh acosh acosh acosh+  atanh = lift7 atanh atanh atanh atanh atanh atanh atanh  {--------------------------------------------------------------------     Some experiments in Enum and Integral instances for tuples