vector-space 0.7.6 → 0.7.7
raw patch · 2 files changed
+4/−177 lines, 2 filesdep +NumInstancesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependencies added: NumInstances
API changes (from Hackage documentation)
- Data.NumInstances: instance (Floating a, Floating b) => Floating (a, b)
- Data.NumInstances: instance (Floating a, Floating b, Floating c) => Floating (a, b, c)
- Data.NumInstances: instance (Floating a, Floating b, Floating c, Floating d) => Floating (a, b, c, d)
- Data.NumInstances: instance (Fractional a, Fractional b) => Fractional (a, b)
- Data.NumInstances: instance (Fractional a, Fractional b, Fractional c) => Fractional (a, b, c)
- Data.NumInstances: instance (Fractional a, Fractional b, Fractional c, Fractional d) => Fractional (a, b, c, d)
- Data.NumInstances: instance (Num a, Num b) => Num (a, b)
- Data.NumInstances: instance (Num a, Num b, Num c) => Num (a, b, c)
- Data.NumInstances: instance (Num a, Num b, Num c, Num d) => Num (a, b, c, d)
- Data.NumInstances: instance Eq (a -> b)
- Data.NumInstances: instance Floating b => Floating (a -> b)
- Data.NumInstances: instance Fractional b => Fractional (a -> b)
- Data.NumInstances: instance Num b => Num (a -> b)
- Data.NumInstances: instance Ord b => Ord (a -> b)
- Data.NumInstances: instance Show (a -> b)
Files
- src/Data/NumInstances.hs +0/−174
- vector-space.cabal +4/−3
− src/Data/NumInstances.hs
@@ -1,174 +0,0 @@-{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances #-}-{-# OPTIONS_GHC -fno-warn-orphans #-}-------------------------------------------------------------------------- |--- Module : Data.NumInstances--- Copyright : (c) Conal Elliott 2008--- License : BSD3--- --- Maintainer : conal@conal.net--- Stability : experimental--- --- Number class instances for functions and tuples-------------------------------------------------------------------------module Data.NumInstances () where--import Control.Applicative--noOv :: String -> String -> a-noOv ty meth = error $ meth ++ ": No overloading for " ++ ty--noFun :: String -> a-noFun = noOv "function"---- Eq & Show are prerequisites for Num, so they need to be faked here-instance Eq (a->b) where- (==) = noFun "(==)"- (/=) = noFun "(/=)"--instance Ord b => Ord (a->b) where- min = liftA2 min- max = liftA2 max--instance Show (a->b) where- show = noFun "show"- showsPrec = noFun "showsPrec"- showList = noFun "showList"--instance Num b => Num (a->b) where- negate = fmap negate- (+) = liftA2 (+)- (*) = liftA2 (*)- fromInteger = pure . fromInteger- abs = fmap abs- signum = fmap signum--instance Fractional b => Fractional (a->b) where- recip = fmap recip- fromRational = pure . fromRational--instance Floating b => Floating (a->b) where- pi = pure pi- sqrt = fmap sqrt- exp = fmap exp- log = fmap log- sin = fmap sin- cos = fmap cos- asin = fmap asin- atan = fmap atan- acos = fmap acos- sinh = fmap sinh- cosh = fmap cosh- asinh = fmap asinh- atanh = fmap atanh- acosh = fmap acosh-------- Tuples--lift2 :: (a->u) -> (b->v) -> (a,b) -> (u,v)-lift2 f g (a,b) = (f a, g b)---- Equivalently, lift2 = (***)--instance (Num a, Num b) => Num (a,b) where- fromInteger n = (fromInteger n, fromInteger n)- (a,b) + (a',b') = (a+a',b+b')- (a,b) - (a',b') = (a-a',b-b')- (a,b) * (a',b') = (a*a',b*b')- negate = lift2 negate negate- abs = lift2 abs abs- signum = lift2 signum signum--instance (Fractional a, Fractional b) => Fractional (a,b) where- fromRational x = (fromRational x, fromRational x)- recip = lift2 recip recip--instance (Floating a, Floating b) => Floating (a,b) where- pi = (pi,pi)- exp = lift2 exp exp- log = lift2 log log- sqrt = lift2 sqrt sqrt- sin = lift2 sin sin- cos = lift2 cos cos- sinh = lift2 sinh sinh- cosh = lift2 cosh cosh- asin = lift2 asin asin- acos = lift2 acos acos- atan = lift2 atan atan- asinh = lift2 asinh asinh- acosh = lift2 acosh acosh- atanh = lift2 atanh atanh--instance (Num a, Num b, Num c) => Num (a,b,c) where- fromInteger n = (fromInteger n, fromInteger n, fromInteger n)- (a,b,c) + (a',b',c') = (a+a',b+b',c+c')- (a,b,c) - (a',b',c') = (a-a',b-b',c-c')- (a,b,c) * (a',b',c') = (a*a',b*b',c*c')- negate = lift3 negate negate negate- abs = lift3 abs abs abs- signum = lift3 signum signum signum--instance (Fractional a, Fractional b, Fractional c)- => Fractional (a,b,c) where- 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)--instance (Floating a, Floating b, Floating c)- => Floating (a,b,c) where- pi = (pi,pi,pi)- exp = lift3 exp exp exp- log = lift3 log log log- sqrt = lift3 sqrt sqrt sqrt- sin = lift3 sin sin sin- cos = lift3 cos cos cos- sinh = lift3 sinh sinh sinh- cosh = lift3 cosh cosh cosh- asin = lift3 asin asin asin- acos = lift3 acos acos acos- atan = lift3 atan atan atan- asinh = lift3 asinh asinh asinh- 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)--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)- (a,b,c,d) + (a',b',c',d') = (a+a',b+b',c+c',d+d')- (a,b,c,d) - (a',b',c',d') = (a-a',b-b',c-c',d-d')- (a,b,c,d) * (a',b',c',d') = (a*a',b*b',c*c',d*d')- negate = lift4 negate negate negate negate- abs = lift4 abs abs abs abs- signum = lift4 signum signum signum signum--instance (Fractional a, Fractional b, Fractional c, Fractional d)- => Fractional (a,b,c,d) where- fromRational x = (fromRational x, fromRational x, fromRational x, fromRational x)- recip = lift4 recip recip recip recip--instance (Floating a, Floating b, Floating c, Floating d)- => Floating (a,b,c,d) where- pi = (pi,pi,pi,pi)- exp = lift4 exp exp exp exp- log = lift4 log log log log- sqrt = lift4 sqrt sqrt sqrt sqrt- sin = lift4 sin sin sin sin- cos = lift4 cos cos cos cos- sinh = lift4 sinh sinh sinh sinh- cosh = lift4 cosh cosh cosh cosh- asin = lift4 asin asin asin asin- acos = lift4 acos acos acos acos- atan = lift4 atan atan atan atan- asinh = lift4 asinh asinh asinh asinh- acosh = lift4 acosh acosh acosh acosh- atanh = lift4 atanh atanh atanh atanh
vector-space.cabal view
@@ -1,5 +1,5 @@ Name: vector-space-Version: 0.7.6+Version: 0.7.7 Cabal-Version: >= 1.2 Synopsis: Vector & affine spaces, linear maps, and derivatives (requires ghc 6.9 or better) Category: math@@ -29,7 +29,8 @@ Library hs-Source-Dirs: src Extensions: - Build-Depends: base<5, MemoTrie >= 0.4.2, Boolean >= 0.0.1+ Build-Depends: base<5, MemoTrie >= 0.4.2, Boolean >= 0.0.1,+ NumInstances >= 1.0 Exposed-Modules: Data.AdditiveGroup Data.VectorSpace@@ -40,7 +41,7 @@ Data.Derivative Data.Cross Data.AffineSpace- Data.NumInstances+-- Data.NumInstances -- This library relies on type families working as well as in 6.10.