vector-space 0.8.5 → 0.8.6
raw patch · 5 files changed
+48/−35 lines, 5 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Data.AdditiveGroup: instance AdditiveGroup CDouble
+ Data.AdditiveGroup: instance AdditiveGroup CFloat
+ Data.AdditiveGroup: instance AdditiveGroup CInt
+ Data.AdditiveGroup: instance AdditiveGroup CIntMax
+ Data.AdditiveGroup: instance AdditiveGroup CLLong
+ Data.AdditiveGroup: instance AdditiveGroup CLong
+ Data.AdditiveGroup: instance AdditiveGroup CSChar
+ Data.AdditiveGroup: instance AdditiveGroup CShort
+ Data.AffineSpace: instance AffineSpace CDouble
+ Data.AffineSpace: instance AffineSpace CFloat
+ Data.Basis: instance HasBasis CDouble
+ Data.Basis: instance HasBasis CFloat
+ Data.VectorSpace: instance InnerSpace CDouble
+ Data.VectorSpace: instance InnerSpace CFloat
+ Data.VectorSpace: instance InnerSpace CInt
+ Data.VectorSpace: instance InnerSpace CIntMax
+ Data.VectorSpace: instance InnerSpace CLLong
+ Data.VectorSpace: instance InnerSpace CLong
+ Data.VectorSpace: instance InnerSpace CSChar
+ Data.VectorSpace: instance InnerSpace CShort
+ Data.VectorSpace: instance VectorSpace CDouble
+ Data.VectorSpace: instance VectorSpace CFloat
+ Data.VectorSpace: instance VectorSpace CInt
+ Data.VectorSpace: instance VectorSpace CIntMax
+ Data.VectorSpace: instance VectorSpace CLLong
+ Data.VectorSpace: instance VectorSpace CLong
+ Data.VectorSpace: instance VectorSpace CSChar
+ Data.VectorSpace: instance VectorSpace CShort
Files
- src/Data/AdditiveGroup.hs +9/−0
- src/Data/AffineSpace.hs +14/−13
- src/Data/Basis.hs +14/−20
- src/Data/VectorSpace.hs +9/−0
- vector-space.cabal +2/−2
src/Data/AdditiveGroup.hs view
@@ -24,6 +24,7 @@ import Data.Foldable (Foldable,foldr) import Data.Complex hiding (magnitude) import Data.Ratio+import Foreign.C.Types (CSChar, CInt, CShort, CLong, CLLong, CIntMax, CFloat, CDouble) import Data.MemoTrie @@ -64,6 +65,14 @@ ScalarType(Integer) ScalarType(Float) ScalarType(Double)+ScalarType(CSChar)+ScalarType(CInt)+ScalarType(CShort)+ScalarType(CLong)+ScalarType(CLLong)+ScalarType(CIntMax)+ScalarType(CFloat)+ScalarType(CDouble) ScalarTypeCon(Integral a,Ratio a) instance (RealFloat v, AdditiveGroup v) => AdditiveGroup (Complex v) where
src/Data/AffineSpace.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE MultiParamTypeClasses, FlexibleContexts, TypeFamilies #-}+{-# LANGUAGE MultiParamTypeClasses, FlexibleContexts, TypeFamilies, CPP #-} ---------------------------------------------------------------------- -- | -- Module : Data.AffineSpace@@ -18,6 +18,7 @@ import Control.Applicative (liftA2) import Data.Ratio+import Foreign.C.Types (CFloat, CDouble) import Data.VectorSpace @@ -65,20 +66,20 @@ p -> p -> Scalar (Diff p) -> p alerp p p' s = p .+^ (s *^ (p' .-. p)) -instance AffineSpace Double where- type Diff Double = Double- (.-.) = (-)- (.+^) = (+) -instance AffineSpace Float where- type Diff Float = Float- (.-.) = (-)- (.+^) = (+)+#define ScalarTypeCon(con,t) \+ instance con => AffineSpace (t) where \+ { type Diff (t) = t \+ ; (.-.) = (-) \+ ; (.+^) = (+) } -instance Integral a => AffineSpace (Ratio a) where- type Diff (Ratio a) = Ratio a- (.-.) = (-)- (.+^) = (+)+#define ScalarType(t) ScalarTypeCon((),t)++ScalarType(Double)+ScalarType(CDouble)+ScalarType(Float)+ScalarType(CFloat)+ScalarTypeCon(Integral a,Ratio a) instance (AffineSpace p, AffineSpace q) => AffineSpace (p,q) where type Diff (p,q) = (Diff p, Diff q)
src/Data/Basis.hs view
@@ -1,9 +1,5 @@--- WARNING: this module depends on type families working fairly well, and--- requires ghc version at least 6.9. I didn't find a way to specify that--- dependency in the .cabal.--- {-# LANGUAGE TypeOperators, TypeFamilies, UndecidableInstances- , FlexibleInstances, MultiParamTypeClasses+ , FlexibleInstances, MultiParamTypeClasses, CPP #-} {-# OPTIONS_GHC -Wall -fno-warn-orphans #-} ----------------------------------------------------------------------@@ -24,6 +20,7 @@ -- import Control.Applicative ((<$>)) import Control.Arrow (first) import Data.Ratio+import Foreign.C.Types (CFloat, CDouble) -- import Data.Either import Data.VectorSpace@@ -62,23 +59,20 @@ -- However, I don't seem to use recompose anywhere. -- I don't even use basisValue or decompose. -instance HasBasis Float where- type Basis Float = ()- basisValue () = 1- decompose s = [((),s)]- decompose' s = const s+#define ScalarTypeCon(con,t) \+ instance con => HasBasis (t) where \+ { type Basis (t) = () \+ ; basisValue () = 1 \+ ; decompose s = [((),s)] \+ ; decompose' s = const s } -instance HasBasis Double where- type Basis Double = ()- basisValue () = 1- decompose s = [((),s)]- decompose' s = const s+#define ScalarType(t) ScalarTypeCon((),t) -instance Integral a => HasBasis (Ratio a) where- type Basis (Ratio a) = ()- basisValue () = 1- decompose s = [((),s)]- decompose' s = const s+ScalarType(Float)+ScalarType(CFloat)+ScalarType(Double)+ScalarType(CDouble)+ScalarTypeCon(Integral a, Ratio a) instance ( HasBasis u, s ~ Scalar u , HasBasis v, s ~ Scalar v )
src/Data/VectorSpace.hs view
@@ -33,6 +33,7 @@ import Control.Applicative (liftA2) import Data.Complex hiding (magnitude)+import Foreign.C.Types (CSChar, CInt, CShort, CLong, CLLong, CIntMax, CFloat, CDouble) import Data.Ratio import Data.AdditiveGroup@@ -98,6 +99,14 @@ ScalarType(Integer) ScalarType(Double) ScalarType(Float)+ScalarType(CSChar)+ScalarType(CInt)+ScalarType(CShort)+ScalarType(CLong)+ScalarType(CLLong)+ScalarType(CIntMax)+ScalarType(CDouble)+ScalarType(CFloat) instance Integral a => VectorSpace (Ratio a) where type Scalar (Ratio a) = Ratio a
vector-space.cabal view
@@ -1,5 +1,5 @@ Name: vector-space-Version: 0.8.5+Version: 0.8.6 Cabal-Version: >= 1.6 Synopsis: Vector & affine spaces, linear maps, and derivatives Category: math@@ -11,7 +11,7 @@ (scalars, vectors, matrices, ...). . /Warning/: this package depends on type families working fairly well,- and requires ghc version at least 6.9.+ requiring GHC version at least 6.9. . Project wiki page: <http://haskell.org/haskellwiki/vector-space> .