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 +1/−1
- src/Data/NumInstances/Tuple.hs +114/−7
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