linear 1.19.1.2 → 1.19.1.3
raw patch · 10 files changed
+61/−6 lines, 10 filesdep ~doctestdep ~vectorPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: doctest, vector
API changes (from Hackage documentation)
- Linear.Affine: P :: (f a) -> Point f a
- Linear.Affine: instance Typeable Point
- Linear.Affine: instance t ~ Point g b => Rewrapped (Point f a) t
- Linear.Covector: Covector :: ((a -> r) -> r) -> Covector r a
- Linear.Covector: runCovector :: Covector r a -> (a -> r) -> r
- Linear.Plucker: Clockwise :: LinePass
- Linear.Plucker: Coplanar :: LinePass
- Linear.Plucker: Counterclockwise :: LinePass
- Linear.Plucker: Plucker :: !a -> !a -> !a -> !a -> !a -> !a -> Plucker a
- Linear.Plucker.Coincides: Line :: Plucker a -> Coincides a
- Linear.Plucker.Coincides: Ray :: Plucker a -> Coincides a
- Linear.Quaternion: Quaternion :: !a -> {-# UNPACK #-} !(V3 a) -> Quaternion a
- Linear.Quaternion: instance Typeable Quaternion
- Linear.V: V :: Vector a -> V n a
- Linear.V: instance (Bounded a, Dim n) => Bounded (V n a)
- Linear.V: instance (Dim n, Binary a) => Binary (V n a)
- Linear.V: instance (Dim n, Epsilon a) => Epsilon (V n a)
- Linear.V: instance (Dim n, Floating a) => Floating (V n a)
- Linear.V: instance (Dim n, Fractional a) => Fractional (V n a)
- Linear.V: instance (Dim n, Num a) => Num (V n a)
- Linear.V: instance (Dim n, Serial a) => Serial (V n a)
- Linear.V: instance (Dim n, Serialize a) => Serialize (V n a)
- Linear.V: instance (Dim n, Storable a) => Storable (V n a)
- Linear.V: instance (Typeable (V n), Typeable (V n a), Dim n, Data a) => Data (V n a)
- Linear.V: instance Apply (V n)
- Linear.V: instance Bind (V n)
- Linear.V: instance Dim n => Additive (V n)
- Linear.V: instance Dim n => Applicative (V n)
- Linear.V: instance Dim n => Dim (V n a)
- Linear.V: instance Dim n => Distributive (V n)
- Linear.V: instance Dim n => Eq1 (V n)
- Linear.V: instance Dim n => Metric (V n)
- Linear.V: instance Dim n => Monad (V n)
- Linear.V: instance Dim n => MonadFix (V n)
- Linear.V: instance Dim n => MonadZip (V n)
- Linear.V: instance Dim n => Ord1 (V n)
- Linear.V: instance Dim n => Read1 (V n)
- Linear.V: instance Dim n => Representable (V n)
- Linear.V: instance Dim n => Serial1 (V n)
- Linear.V: instance Dim n => Show1 (V n)
- Linear.V: instance Each (V n a) (V n b) a b
- Linear.V: instance Eq a => Eq (V n a)
- Linear.V: instance Foldable (V n)
- Linear.V: instance FoldableWithIndex Int (V n)
- Linear.V: instance Functor (V n)
- Linear.V: instance FunctorWithIndex Int (V n)
- Linear.V: instance Generic (V n a)
- Linear.V: instance Generic1 (V n)
- Linear.V: instance Ixed (V n a)
- Linear.V: instance NFData a => NFData (V n a)
- Linear.V: instance Ord a => Ord (V n a)
- Linear.V: instance Read a => Read (V n a)
- Linear.V: instance Show a => Show (V n a)
- Linear.V: instance Traversable (V n)
- Linear.V: instance TraversableWithIndex Int (V n)
- Linear.V: instance Typeable V
- Linear.V: toVector :: V n a -> Vector a
- Linear.V0: V0 :: V0 a
- Linear.V0: instance Typeable V0
- Linear.V1: V1 :: a -> V1 a
- Linear.V1: instance Typeable V1
- Linear.V2: V2 :: !a -> !a -> V2 a
- Linear.V2: instance Typeable V2
- Linear.V3: V3 :: !a -> !a -> !a -> V3 a
- Linear.V3: instance Typeable V3
- Linear.V4: V4 :: !a -> !a -> !a -> !a -> V4 a
- Linear.V4: instance Typeable V4
- Linear.Vector: E :: (forall x. Lens' (t x) x) -> E t
- Linear.Vector: el :: E t -> forall x. Lens' (t x) x
+ Linear.Affine: [P] :: (f a) -> Point f a
+ Linear.Affine: instance (t ~ Point g b) => Rewrapped (Point f a) t
+ Linear.Covector: [Covector] :: ((a -> r) -> r) -> Covector r a
+ Linear.Covector: [runCovector] :: Covector r a -> (a -> r) -> r
+ Linear.Plucker: [Clockwise] :: LinePass
+ Linear.Plucker: [Coplanar] :: LinePass
+ Linear.Plucker: [Counterclockwise] :: LinePass
+ Linear.Plucker: [Plucker] :: !a -> !a -> !a -> !a -> !a -> !a -> Plucker a
+ Linear.Plucker.Coincides: [Line] :: Plucker a -> Coincides a
+ Linear.Plucker.Coincides: [Ray] :: Plucker a -> Coincides a
+ Linear.Quaternion: [Quaternion] :: !a -> {-# UNPACK #-} !(V3 a) -> Quaternion a
+ Linear.V: [V] :: Vector a -> V n a
+ Linear.V: [toVector] :: V n a -> Vector a
+ Linear.V: instance forall (k :: BOX) (n :: k) a b. Each (V n a) (V n b) a b
+ Linear.V: instance forall (k :: BOX) (n :: k) a. (Bounded a, Dim n) => Bounded (V n a)
+ Linear.V: instance forall (k :: BOX) (n :: k) a. (Dim n, Binary a) => Binary (V n a)
+ Linear.V: instance forall (k :: BOX) (n :: k) a. (Dim n, Epsilon a) => Epsilon (V n a)
+ Linear.V: instance forall (k :: BOX) (n :: k) a. (Dim n, Floating a) => Floating (V n a)
+ Linear.V: instance forall (k :: BOX) (n :: k) a. (Dim n, Fractional a) => Fractional (V n a)
+ Linear.V: instance forall (k :: BOX) (n :: k) a. (Dim n, Num a) => Num (V n a)
+ Linear.V: instance forall (k :: BOX) (n :: k) a. (Dim n, Serial a) => Serial (V n a)
+ Linear.V: instance forall (k :: BOX) (n :: k) a. (Dim n, Serialize a) => Serialize (V n a)
+ Linear.V: instance forall (k :: BOX) (n :: k) a. (Dim n, Storable a) => Storable (V n a)
+ Linear.V: instance forall (k :: BOX) (n :: k) a. (Typeable (V n), Typeable (V n a), Dim n, Data a) => Data (V n a)
+ Linear.V: instance forall (k :: BOX) (n :: k) a. Dim n => Dim (V n a)
+ Linear.V: instance forall (k :: BOX) (n :: k) a. Eq a => Eq (V n a)
+ Linear.V: instance forall (k :: BOX) (n :: k) a. Generic (V n a)
+ Linear.V: instance forall (k :: BOX) (n :: k) a. Ixed (V n a)
+ Linear.V: instance forall (k :: BOX) (n :: k) a. NFData a => NFData (V n a)
+ Linear.V: instance forall (k :: BOX) (n :: k) a. Ord a => Ord (V n a)
+ Linear.V: instance forall (k :: BOX) (n :: k) a. Read a => Read (V n a)
+ Linear.V: instance forall (k :: BOX) (n :: k) a. Show a => Show (V n a)
+ Linear.V: instance forall (k :: BOX) (n :: k). Apply (V n)
+ Linear.V: instance forall (k :: BOX) (n :: k). Bind (V n)
+ Linear.V: instance forall (k :: BOX) (n :: k). Dim n => Additive (V n)
+ Linear.V: instance forall (k :: BOX) (n :: k). Dim n => Applicative (V n)
+ Linear.V: instance forall (k :: BOX) (n :: k). Dim n => Distributive (V n)
+ Linear.V: instance forall (k :: BOX) (n :: k). Dim n => Eq1 (V n)
+ Linear.V: instance forall (k :: BOX) (n :: k). Dim n => Metric (V n)
+ Linear.V: instance forall (k :: BOX) (n :: k). Dim n => Monad (V n)
+ Linear.V: instance forall (k :: BOX) (n :: k). Dim n => MonadFix (V n)
+ Linear.V: instance forall (k :: BOX) (n :: k). Dim n => MonadZip (V n)
+ Linear.V: instance forall (k :: BOX) (n :: k). Dim n => Ord1 (V n)
+ Linear.V: instance forall (k :: BOX) (n :: k). Dim n => Read1 (V n)
+ Linear.V: instance forall (k :: BOX) (n :: k). Dim n => Representable (V n)
+ Linear.V: instance forall (k :: BOX) (n :: k). Dim n => Serial1 (V n)
+ Linear.V: instance forall (k :: BOX) (n :: k). Dim n => Show1 (V n)
+ Linear.V: instance forall (k :: BOX) (n :: k). Foldable (V n)
+ Linear.V: instance forall (k :: BOX) (n :: k). FoldableWithIndex Int (V n)
+ Linear.V: instance forall (k :: BOX) (n :: k). Functor (V n)
+ Linear.V: instance forall (k :: BOX) (n :: k). FunctorWithIndex Int (V n)
+ Linear.V: instance forall (k :: BOX) (n :: k). Generic1 (V n)
+ Linear.V: instance forall (k :: BOX) (n :: k). Traversable (V n)
+ Linear.V: instance forall (k :: BOX) (n :: k). TraversableWithIndex Int (V n)
+ Linear.V0: [V0] :: V0 a
+ Linear.V1: [V1] :: a -> V1 a
+ Linear.V2: [V2] :: !a -> !a -> V2 a
+ Linear.V3: [V3] :: !a -> !a -> !a -> V3 a
+ Linear.V4: [V4] :: !a -> !a -> !a -> !a -> V4 a
+ Linear.Vector: [E] :: (forall x. Lens' (t x) x) -> E t
+ Linear.Vector: [el] :: E t -> forall x. Lens' (t x) x
Files
- CHANGELOG.markdown +4/−0
- linear.cabal +4/−4
- src/Linear/Plucker.hs +7/−0
- src/Linear/Quaternion.hs +7/−0
- src/Linear/V0.hs +8/−0
- src/Linear/V1.hs +7/−0
- src/Linear/V2.hs +7/−0
- src/Linear/V3.hs +8/−0
- src/Linear/V4.hs +7/−0
- src/Linear/Vector.hs +2/−2
CHANGELOG.markdown view
@@ -1,3 +1,7 @@+1.19.1.3+--------+* `vector` 0.11.0.0 support+ 1.19.1.2 -------- * Fix GHC 7.4.
linear.cabal view
@@ -1,6 +1,6 @@ name: linear category: Math, Algebra-version: 1.19.1.2+version: 1.19.1.3 license: BSD3 cabal-version: >= 1.8 license-file: LICENSE@@ -13,7 +13,7 @@ synopsis: Linear Algebra description: Types and combinators for linear algebra on free vector spaces build-type: Custom-tested-with: GHC == 7.4.1, GHC == 7.4.2, GHC == 7.6.1+tested-with: GHC == 7.4.2, GHC == 7.6.1, GHC == 7.8.4, GHC == 7.10.1 extra-source-files: .ghci .gitignore@@ -56,7 +56,7 @@ transformers >= 0.2 && < 0.5, transformers-compat >= 0.4 && < 1, unordered-containers >= 0.2.3 && < 0.3,- vector >= 0.10 && < 0.11,+ vector >= 0.10 && < 0.12, void >= 0.6 && < 1 if flag(template-haskell) && impl(ghc)@@ -98,7 +98,7 @@ build-depends: base, directory >= 1.0 && < 1.3,- doctest >= 0.8 && < 0.10,+ doctest >= 0.8 && < 0.11, filepath >= 1.3 && < 1.5, lens, simple-reflect >= 0.3.1
src/Linear/Plucker.hs view
@@ -8,6 +8,10 @@ {-# LANGUAGE Trustworthy #-} {-# LANGUAGE DeriveGeneric #-} #endif++#ifndef MIN_VERSION_vector+#define MIN_VERSION_vector(x,y,z) 1+#endif ----------------------------------------------------------------------------- -- | -- Copyright : (C) 2012-2015 Edward Kmett@@ -536,6 +540,9 @@ M.basicUnsafeWrite a (o+3) w M.basicUnsafeWrite a (o+4) v M.basicUnsafeWrite a (o+5) u+#if MIN_VERSION_vector(0,11,0)+ basicInitialize (MV_Plucker _ v) = M.basicInitialize v+#endif instance U.Unbox a => G.Vector U.Vector (Plucker a) where basicUnsafeFreeze (MV_Plucker n v) = liftM ( V_Plucker n) (G.basicUnsafeFreeze v)
src/Linear/Quaternion.hs view
@@ -9,6 +9,10 @@ {-# LANGUAGE Trustworthy #-} {-# LANGUAGE DeriveGeneric #-} #endif++#ifndef MIN_VERSION_vector+#define MIN_VERSION_vector(x,y,z) 1+#endif ----------------------------------------------------------------------------- -- | -- Copyright : (C) 2012-2015 Edward Kmett@@ -533,6 +537,9 @@ M.basicUnsafeWrite v (o+1) y M.basicUnsafeWrite v (o+2) z M.basicUnsafeWrite v (o+3) w+#if MIN_VERSION_vector(0,11,0)+ basicInitialize (MV_Quaternion _ v) = M.basicInitialize v+#endif instance U.Unbox a => G.Vector U.Vector (Quaternion a) where basicUnsafeFreeze (MV_Quaternion n v) = liftM ( V_Quaternion n) (G.basicUnsafeFreeze v)
src/Linear/V0.hs view
@@ -12,6 +12,11 @@ #ifndef MIN_VERSION_hashable #define MIN_VERSION_hashable #endif++#ifndef MIN_VERSION_vector+#define MIN_VERSION_vector(x,y,z) 1+#endif+ ----------------------------------------------------------------------------- -- | -- Copyright : (C) 2012-2015 Edward Kmett@@ -270,6 +275,9 @@ basicUnsafeNew n = return (MV_V0 n) basicUnsafeRead _ _ = return V0 basicUnsafeWrite _ _ _ = return ()+#if MIN_VERSION_vector(0,11,0)+ basicInitialize _ = return ()+#endif instance G.Vector U.Vector (V0 a) where basicUnsafeFreeze (MV_V0 n) = return (V_V0 n)
src/Linear/V1.hs view
@@ -17,6 +17,10 @@ #ifndef MIN_VERSION_hashable #define MIN_VERSION_hashable(x,y,z) 1 #endif++#ifndef MIN_VERSION_vector+#define MIN_VERSION_vector(x,y,z) 1+#endif ----------------------------------------------------------------------------- -- | -- Copyright : (C) 2012-2015 Edward Kmett@@ -291,6 +295,9 @@ basicUnsafeNew n = liftM MV_V1 (M.basicUnsafeNew n) basicUnsafeRead (MV_V1 v) i = liftM V1 (M.basicUnsafeRead v i) basicUnsafeWrite (MV_V1 v) i (V1 x) = M.basicUnsafeWrite v i x+#if MIN_VERSION_vector(0,11,0)+ basicInitialize (MV_V1 v) = M.basicInitialize v+#endif instance U.Unbox a => G.Vector U.Vector (V1 a) where basicUnsafeFreeze (MV_V1 v) = liftM V_V1 (G.basicUnsafeFreeze v)
src/Linear/V2.hs view
@@ -10,6 +10,10 @@ {-# LANGUAGE Trustworthy #-} {-# LANGUAGE DeriveGeneric #-} #endif++#ifndef MIN_VERSION_vector+#define MIN_VERSION_vector(x,y,z) 1+#endif ----------------------------------------------------------------------------- -- | -- Copyright : (C) 2012-2015 Edward Kmett@@ -344,6 +348,9 @@ do let o = 2*i M.basicUnsafeWrite v o x M.basicUnsafeWrite v (o+1) y+#if MIN_VERSION_vector(0,11,0)+ basicInitialize (MV_V2 _ v) = M.basicInitialize v+#endif instance U.Unbox a => G.Vector U.Vector (V2 a) where basicUnsafeFreeze (MV_V2 n v) = liftM ( V_V2 n) (G.basicUnsafeFreeze v)
src/Linear/V3.hs view
@@ -9,6 +9,11 @@ {-# LANGUAGE Trustworthy #-} {-# LANGUAGE DeriveGeneric #-} #endif++#ifndef MIN_VERSION_vector+#define MIN_VERSION_vector(x,y,z) 1+#endif+ ----------------------------------------------------------------------------- -- | -- Copyright : (C) 2012-2015 Edward Kmett@@ -368,6 +373,9 @@ M.basicUnsafeWrite v o x M.basicUnsafeWrite v (o+1) y M.basicUnsafeWrite v (o+2) z+#if MIN_VERSION_vector(0,11,0)+ basicInitialize (MV_V3 _ v) = M.basicInitialize v+#endif instance U.Unbox a => G.Vector U.Vector (V3 a) where basicUnsafeFreeze (MV_V3 n v) = liftM ( V_V3 n) (G.basicUnsafeFreeze v)
src/Linear/V4.hs view
@@ -9,6 +9,10 @@ {-# LANGUAGE Trustworthy #-} {-# LANGUAGE DeriveGeneric #-} #endif++#ifndef MIN_VERSION_vector+#define MIN_VERSION_vector(x,y,z) 1+#endif ----------------------------------------------------------------------------- -- | -- Copyright : (C) 2012-2015 Edward Kmett@@ -513,6 +517,9 @@ M.basicUnsafeWrite v (o+1) y M.basicUnsafeWrite v (o+2) z M.basicUnsafeWrite v (o+3) w+#if MIN_VERSION_vector(0,11,0)+ basicInitialize (MV_V4 _ v) = M.basicInitialize v+#endif instance U.Unbox a => G.Vector U.Vector (V4 a) where basicUnsafeFreeze (MV_V4 n v) = liftM ( V_V4 n) (G.basicUnsafeFreeze v)
src/Linear/Vector.hs view
@@ -202,10 +202,10 @@ {-# INLINE zero #-} liftU2 f u v = case compare lu lv of LT | lu == 0 -> v- | otherwise -> modify (\ w -> Foldable.forM_ [0..lu-1] $ \i -> unsafeWrite w i $ f (unsafeIndex u i) (unsafeIndex v i)) v+ | otherwise -> Vector.modify (\ w -> Foldable.forM_ [0..lu-1] $ \i -> unsafeWrite w i $ f (unsafeIndex u i) (unsafeIndex v i)) v EQ -> Vector.zipWith f u v GT | lv == 0 -> u- | otherwise -> modify (\ w -> Foldable.forM_ [0..lv-1] $ \i -> unsafeWrite w i $ f (unsafeIndex u i) (unsafeIndex v i)) u+ | otherwise -> Vector.modify (\ w -> Foldable.forM_ [0..lv-1] $ \i -> unsafeWrite w i $ f (unsafeIndex u i) (unsafeIndex v i)) u where lu = Vector.length u lv = Vector.length v