packages feed

vector-space 0.8.3 → 0.8.4

raw patch · 3 files changed

+29/−26 lines, 3 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Data.VectorSpace: instance (InnerSpace a, AdditiveGroup (Scalar a)) => InnerSpace (Maybe a)
- Data.VectorSpace: instance (InnerSpace u, s ~ Scalar u, InnerSpace v, s ~ Scalar v, AdditiveGroup (Scalar v)) => InnerSpace (u, v)
- Data.VectorSpace: instance (InnerSpace u, s ~ Scalar u, InnerSpace v, s ~ Scalar v, InnerSpace w, s ~ Scalar w, AdditiveGroup s) => InnerSpace (u, v, w)
- Data.VectorSpace: instance (InnerSpace u, s ~ Scalar u, InnerSpace v, s ~ Scalar v, InnerSpace w, s ~ Scalar w, InnerSpace x, s ~ Scalar x, AdditiveGroup s) => InnerSpace (u, v, w, x)
- Data.VectorSpace: instance (RealFloat v, InnerSpace v, s ~ Scalar v, AdditiveGroup s) => InnerSpace (Complex v)
+ Data.VectorSpace: instance (InnerSpace u, s ~ Scalar u, InnerSpace v, s ~ Scalar v) => InnerSpace (u, v)
+ Data.VectorSpace: instance (InnerSpace u, s ~ Scalar u, InnerSpace v, s ~ Scalar v, InnerSpace w, s ~ Scalar w) => InnerSpace (u, v, w)
+ Data.VectorSpace: instance (InnerSpace u, s ~ Scalar u, InnerSpace v, s ~ Scalar v, InnerSpace w, s ~ Scalar w, InnerSpace x, s ~ Scalar x) => InnerSpace (u, v, w, x)
+ Data.VectorSpace: instance (RealFloat v, InnerSpace v) => InnerSpace (Complex v)
+ Data.VectorSpace: instance InnerSpace Int
+ Data.VectorSpace: instance InnerSpace Integer
+ Data.VectorSpace: instance InnerSpace a => InnerSpace (Maybe a)
+ Data.VectorSpace: instance VectorSpace Int
+ Data.VectorSpace: instance VectorSpace Integer
- Data.VectorSpace: class VectorSpace v => InnerSpace v
+ Data.VectorSpace: class (VectorSpace v, AdditiveGroup (Scalar v)) => InnerSpace v

Files

src/Data/AdditiveGroup.hs view
@@ -1,4 +1,4 @@-{-# LANGUAGE TypeOperators #-}+{-# LANGUAGE TypeOperators, CPP #-} ---------------------------------------------------------------------- -- | -- Module      :   Data.AdditiveGroup@@ -55,12 +55,16 @@ --  -- instance AdditiveGroup n where {zeroV=0; (^+^) = (+); negateV = negate} -instance AdditiveGroup Int     where {zeroV=0; (^+^) = (+); negateV = negate}-instance AdditiveGroup Integer where {zeroV=0; (^+^) = (+); negateV = negate}-instance AdditiveGroup Float   where {zeroV=0; (^+^) = (+); negateV = negate}-instance AdditiveGroup Double  where {zeroV=0; (^+^) = (+); negateV = negate}-instance Integral a => AdditiveGroup (Ratio a) where-  {zeroV=0; (^+^) = (+); negateV = negate}+#define ScalarTypeCon(con,t) \+  instance con => AdditiveGroup (t) where {zeroV=0; (^+^) = (+); negateV = negate}++#define ScalarType(t) ScalarTypeCon((),t)++ScalarType(Int)+ScalarType(Integer)+ScalarType(Float)+ScalarType(Double)+ScalarTypeCon(Integral a,Ratio a)  instance (RealFloat v, AdditiveGroup v) => AdditiveGroup (Complex v) where   zeroV   = zeroV :+ zeroV
src/Data/VectorSpace.hs view
@@ -1,5 +1,6 @@ {-# LANGUAGE MultiParamTypeClasses, TypeOperators-           , TypeFamilies, UndecidableInstances+           , TypeFamilies, UndecidableInstances, CPP+           , FlexibleContexts  #-} {-# OPTIONS_GHC -Wall #-} ----------------------------------------------------------------------@@ -48,7 +49,7 @@ infixr 7 <.>  -- | Adds inner (dot) products.-class VectorSpace v => InnerSpace v where+class (VectorSpace v, AdditiveGroup (Scalar v)) => InnerSpace v where   -- | Inner/dot product   (<.>) :: v -> v -> Scalar v @@ -87,15 +88,16 @@ project :: (InnerSpace v, s ~ Scalar v, Fractional s) => v -> v -> v project u v = ((v <.> u) / magnitudeSq u) *^ u -instance VectorSpace Double where-  type Scalar Double = Double-  (*^) = (*)-instance InnerSpace  Double where (<.>) = (*)+#define ScalarType(t) \+  instance VectorSpace (t) where \+    { type Scalar (t) = (t) \+    ; (*^) = (*) } ; \+  instance InnerSpace  (t) where (<.>) = (*) -instance VectorSpace Float  where-  type Scalar Float = Float-  (*^)  = (*)-instance InnerSpace  Float  where (<.>) = (*)+ScalarType(Int)+ScalarType(Integer)+ScalarType(Double)+ScalarType(Float)  instance Integral a => VectorSpace (Ratio a) where   type Scalar (Ratio a) = Ratio a@@ -106,7 +108,7 @@   type Scalar (Complex v) = Scalar v   s*^(u :+ v) = s*^u :+ s*^v -instance (RealFloat v, InnerSpace v, s ~ Scalar v, AdditiveGroup s)+instance (RealFloat v, InnerSpace v)      => InnerSpace (Complex v) where   (u :+ v) <.> (u' :+ v') = (u <.> u') ^+^ (v <.> v') @@ -126,8 +128,7 @@   s *^ (u,v) = (s*^u,s*^v)  instance ( InnerSpace u, s ~ Scalar u-         , InnerSpace v, s ~ Scalar v-         , AdditiveGroup (Scalar v) )+         , InnerSpace v, s ~ Scalar v )     => InnerSpace (u,v) where   (u,v) <.> (u',v') = (u <.> u') ^+^ (v <.> v') @@ -140,8 +141,7 @@  instance ( InnerSpace u, s ~ Scalar u          , InnerSpace v, s ~ Scalar v-         , InnerSpace w, s ~ Scalar w-         , AdditiveGroup s )+         , InnerSpace w, s ~ Scalar w )     => InnerSpace (u,v,w) where   (u,v,w) <.> (u',v',w') = u<.>u' ^+^ v<.>v' ^+^ w<.>w' @@ -156,8 +156,7 @@ instance ( InnerSpace u, s ~ Scalar u          , InnerSpace v, s ~ Scalar v          , InnerSpace w, s ~ Scalar w-         , InnerSpace x, s ~ Scalar x-         , AdditiveGroup s )+         , InnerSpace x, s ~ Scalar x )     => InnerSpace (u,v,w,x) where   (u,v,w,x) <.> (u',v',w',x') = u<.>u' ^+^ v<.>v' ^+^ w<.>w' ^+^ x<.>x' @@ -195,7 +194,7 @@   -instance (InnerSpace a, AdditiveGroup (Scalar a)) => InnerSpace (Maybe a) where+instance InnerSpace a => InnerSpace (Maybe a) where   -- dotting with zero (vector) yields zero (scalar)   Nothing <.> _     = zeroV   _ <.> Nothing     = zeroV
vector-space.cabal view
@@ -1,5 +1,5 @@ Name:                vector-space-Version:             0.8.3+Version:             0.8.4 Cabal-Version:       >= 1.6 Synopsis:            Vector & affine spaces, linear maps, and derivatives Category:            math