free-vector-spaces 0.1.4.0 → 0.1.5.0
raw patch · 2 files changed
+45/−2 lines, 2 filesdep +pragmatic-showdep ~lensdep ~vector-spacePVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependencies added: pragmatic-show
Dependency ranges changed: lens, vector-space
API changes (from Hackage documentation)
+ Data.VectorSpace.Free: instance Text.Show.Pragmatic.Show (Linear.V0.V0 GHC.Integer.Type.Integer)
+ Data.VectorSpace.Free: instance Text.Show.Pragmatic.Show (Linear.V0.V0 GHC.Types.Double)
+ Data.VectorSpace.Free: instance Text.Show.Pragmatic.Show (Linear.V0.V0 GHC.Types.Float)
+ Data.VectorSpace.Free: instance Text.Show.Pragmatic.Show (Linear.V0.V0 GHC.Types.Int)
+ Data.VectorSpace.Free: instance Text.Show.Pragmatic.Show (Linear.V1.V1 GHC.Integer.Type.Integer)
+ Data.VectorSpace.Free: instance Text.Show.Pragmatic.Show (Linear.V1.V1 GHC.Types.Double)
+ Data.VectorSpace.Free: instance Text.Show.Pragmatic.Show (Linear.V1.V1 GHC.Types.Float)
+ Data.VectorSpace.Free: instance Text.Show.Pragmatic.Show (Linear.V1.V1 GHC.Types.Int)
+ Data.VectorSpace.Free: instance Text.Show.Pragmatic.Show (Linear.V2.V2 GHC.Integer.Type.Integer)
+ Data.VectorSpace.Free: instance Text.Show.Pragmatic.Show (Linear.V2.V2 GHC.Types.Double)
+ Data.VectorSpace.Free: instance Text.Show.Pragmatic.Show (Linear.V2.V2 GHC.Types.Float)
+ Data.VectorSpace.Free: instance Text.Show.Pragmatic.Show (Linear.V2.V2 GHC.Types.Int)
+ Data.VectorSpace.Free: instance Text.Show.Pragmatic.Show (Linear.V3.V3 GHC.Integer.Type.Integer)
+ Data.VectorSpace.Free: instance Text.Show.Pragmatic.Show (Linear.V3.V3 GHC.Types.Double)
+ Data.VectorSpace.Free: instance Text.Show.Pragmatic.Show (Linear.V3.V3 GHC.Types.Float)
+ Data.VectorSpace.Free: instance Text.Show.Pragmatic.Show (Linear.V3.V3 GHC.Types.Int)
+ Data.VectorSpace.Free: instance Text.Show.Pragmatic.Show (Linear.V4.V4 GHC.Integer.Type.Integer)
+ Data.VectorSpace.Free: instance Text.Show.Pragmatic.Show (Linear.V4.V4 GHC.Types.Double)
+ Data.VectorSpace.Free: instance Text.Show.Pragmatic.Show (Linear.V4.V4 GHC.Types.Float)
+ Data.VectorSpace.Free: instance Text.Show.Pragmatic.Show (Linear.V4.V4 GHC.Types.Int)
+ Data.VectorSpace.Free: type family Basis v :: *;
+ Data.VectorSpace.Free: }
- Data.VectorSpace.Free: (^/^) :: OneDimensional v => v -> v -> Maybe (Scalar v)
+ Data.VectorSpace.Free: (^/^) :: (OneDimensional v, Generic v, OneDimensional (VRep v), Scalar (VRep v) ~ Scalar v) => v -> v -> Maybe (Scalar v)
- Data.VectorSpace.Free: class AdditiveGroup (Diff p) => AffineSpace p where type family Diff p :: *
+ Data.VectorSpace.Free: class AdditiveGroup Diff p => AffineSpace p where {
- Data.VectorSpace.Free: class (VectorSpace v, Num (Scalar v)) => FiniteFreeSpace v where freeDimension _ = freeDimension ([] :: [VRep v]) toFullUnboxVect v = toFullUnboxVect (from v :: VRep v) unsafeFromFullUnboxVect v = to (unsafeFromFullUnboxVect v :: VRep v) fromUnboxVect v = result where result = case length v of { 0 -> zeroV n | n < d -> unsafeFromFullUnboxVect $ v ++ replicate (d - n) 0 } d = freeDimension [result]
+ Data.VectorSpace.Free: class (VectorSpace v, Num (Scalar v)) => FiniteFreeSpace v
- Data.VectorSpace.Free: class VectorSpace v => HasBasis v where type family Basis v :: *
+ Data.VectorSpace.Free: class VectorSpace v => HasBasis v where {
- Data.VectorSpace.Free: class (VectorSpace v, AdditiveGroup (Scalar v)) => InnerSpace v
+ Data.VectorSpace.Free: class (VectorSpace v, AdditiveGroup Scalar v) => InnerSpace v
- Data.VectorSpace.Free: class (VectorSpace v, Fractional (Scalar v)) => OneDimensional v where v ^/^ w = (from v :: VRep v) ^/^ from w v ^/! w = case v ^/^ w of { Just μ -> μ Nothing -> 1 / 0 }
+ Data.VectorSpace.Free: class (VectorSpace v, Fractional (Scalar v)) => OneDimensional v
- Data.VectorSpace.Free: class AdditiveGroup v => VectorSpace v where type family Scalar v :: *
+ Data.VectorSpace.Free: class AdditiveGroup v => VectorSpace v where {
- Data.VectorSpace.Free: freeDimension :: (FiniteFreeSpace v, Functor p) => p v -> Int
+ Data.VectorSpace.Free: freeDimension :: (FiniteFreeSpace v, Generic v, FiniteFreeSpace (VRep v)) => p v -> Int
- Data.VectorSpace.Free: toFullUnboxVect :: (FiniteFreeSpace v, Unbox (Scalar v)) => v -> Vector (Scalar v)
+ Data.VectorSpace.Free: toFullUnboxVect :: (FiniteFreeSpace v, Generic v, FiniteFreeSpace (VRep v), Unbox (Scalar v), Scalar (VRep v) ~ Scalar v) => v -> Vector (Scalar v)
- Data.VectorSpace.Free: unsafeFromFullUnboxVect :: (FiniteFreeSpace v, Unbox (Scalar v)) => Vector (Scalar v) -> v
+ Data.VectorSpace.Free: unsafeFromFullUnboxVect :: (FiniteFreeSpace v, Generic v, FiniteFreeSpace (VRep v), Unbox (Scalar v), Scalar (VRep v) ~ Scalar v) => Vector (Scalar v) -> v
Files
- Data/VectorSpace/Free.hs +42/−0
- free-vector-spaces.cabal +3/−2
Data/VectorSpace/Free.hs view
@@ -72,6 +72,8 @@ import qualified GHC.Generics as Gnrx import GHC.Generics (Generic, (:*:)(..)) +import qualified Text.Show.Pragmatic as SP+ vDecomp :: FoldableWithIndex (L.E v) v => v s -> [(L.E v, s)] vDecomp = ifoldr (\b s l -> (b,s):l) [] @@ -147,6 +149,46 @@ trie f = V4T $ V4 (f L.ex) (f L.ey) (f L.ez) (f L.ew) untrie (V4T v) (L.E i) = v^.i enumerate (V4T (V4 x y z w)) = [(L.ex, x), (L.ey, y), (L.ez, z), (L.ew, w)]++instance SP.Show (V0 Int) where showsPrec = showsPrec+instance SP.Show (V1 Int) where showsPrec = showsPrec+instance SP.Show (V2 Int) where showsPrec = showsPrec+instance SP.Show (V3 Int) where showsPrec = showsPrec+instance SP.Show (V4 Int) where showsPrec = showsPrec++instance SP.Show (V0 Integer) where showsPrec = showsPrec+instance SP.Show (V1 Integer) where showsPrec = showsPrec+instance SP.Show (V2 Integer) where showsPrec = showsPrec+instance SP.Show (V3 Integer) where showsPrec = showsPrec+instance SP.Show (V4 Integer) where showsPrec = showsPrec++instance SP.Show (V0 Float) where+ show V0 = "V0"+instance SP.Show (V1 Float) where+ showsPrec p (V1 x) = showParen (p>9) $ ("V1 "++) . SP.showsPrec 10 x+instance SP.Show (V2 Float) where+ showsPrec p v = showParen (p>9) $ ("V2 "++).xs.(' ':).ys+ where V2 xs ys = SP.showsPrecWithSharedPrecision abs 7 10 v+instance SP.Show (V3 Float) where+ showsPrec p v = showParen (p>9) $ ("V3 "++).xs.(' ':).ys.(' ':).zs+ where V3 xs ys zs = SP.showsPrecWithSharedPrecision abs 7 10 v+instance SP.Show (V4 Float) where+ showsPrec p v = showParen (p>9) $ ("V4 "++).xs.(' ':).ys.(' ':).zs.(' ':).ws+ where V4 xs ys zs ws = SP.showsPrecWithSharedPrecision abs 7 10 v++instance SP.Show (V0 Double) where+ show V0 = "V0"+instance SP.Show (V1 Double) where+ showsPrec p (V1 x) = showParen (p>9) $ ("V1 "++) . SP.showsPrec 10 x+instance SP.Show (V2 Double) where+ showsPrec p v = showParen (p>9) $ ("V2 "++).xs.(' ':).ys+ where V2 xs ys = SP.showsPrecWithSharedPrecision abs 10 10 v+instance SP.Show (V3 Double) where+ showsPrec p v = showParen (p>9) $ ("V3 "++).xs.(' ':).ys.(' ':).zs+ where V3 xs ys zs = SP.showsPrecWithSharedPrecision abs 10 10 v+instance SP.Show (V4 Double) where+ showsPrec p v = showParen (p>9) $ ("V4 "++).xs.(' ':).ys.(' ':).zs.(' ':).ws+ where V4 xs ys zs ws = SP.showsPrecWithSharedPrecision abs 10 10 v infixr 7 ^/^, ^/!
free-vector-spaces.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/ name: free-vector-spaces-version: 0.1.4.0+version: 0.1.5.0 synopsis: Instantiate the classes from the vector-space package with types from linear description: The <http://hackage.haskell.org/package/linear/ linear> package offers efficient vector types — where vector means /element of a free vector space/, i.e.@@ -57,7 +57,8 @@ MemoTrie, linear >=1.18 && <1.23, lens >= 4 && < 5,- vector+ vector,+ pragmatic-show >=0.1.2 && <0.2 ghc-options: -O2 -- hs-source-dirs: default-language: Haskell2010