linear 1.16.4 → 1.17
raw patch · 9 files changed
+122/−1 lines, 9 filesdep +bytesdep +cerealdep ~base
Dependencies added: bytes, cereal
Dependency ranges changed: base
Files
- linear.cabal +3/−1
- src/Linear/Plucker.hs +14/−0
- src/Linear/Quaternion.hs +15/−0
- src/Linear/V.hs +19/−0
- src/Linear/V0.hs +14/−0
- src/Linear/V1.hs +15/−0
- src/Linear/V2.hs +14/−0
- src/Linear/V3.hs +14/−0
- src/Linear/V4.hs +14/−0
linear.cabal view
@@ -1,6 +1,6 @@ name: linear category: Math, Algebra-version: 1.16.4+version: 1.17 license: BSD3 cabal-version: >= 1.8 license-file: LICENSE@@ -33,6 +33,8 @@ adjunctions >= 4 && < 5, base >= 4.5 && < 5, binary >= 0.5 && < 0.8,+ bytes >= 0.15 && < 1,+ cereal >= 0.4.1.1 && < 0.5, containers >= 0.4 && < 0.6, deepseq >= 1.1 && < 1.5, distributive >= 0.2.2 && < 1,
src/Linear/Plucker.hs view
@@ -51,6 +51,8 @@ import Control.Monad.Fix import Control.Monad.Zip import Control.Lens hiding (index, (<.>))+import Data.Binary as Binary+import Data.Bytes.Serial import Data.Distributive import Data.Foldable as Foldable import Data.Functor.Bind@@ -58,6 +60,7 @@ import Data.Hashable import Data.Semigroup import Data.Semigroup.Foldable+import Data.Serialize as Cereal import Foreign.Ptr (castPtr) import Foreign.Storable (Storable(..)) import GHC.Arr (Ix(..))@@ -562,3 +565,14 @@ instance NFData a => NFData (Plucker a) where rnf (Plucker a b c d e f) = rnf a `seq` rnf b `seq` rnf c `seq` rnf d `seq` rnf e `seq` rnf f++instance Serial1 Plucker+instance Serial a => Serial (Plucker a)++instance Binary a => Binary (Plucker a) where+ put = serializeWith Binary.put+ get = deserializeWith Binary.get++instance Serialize a => Serialize (Plucker a) where+ put = serializeWith Cereal.put+ get = deserializeWith Cereal.get
src/Linear/Quaternion.hs view
@@ -44,6 +44,9 @@ import Control.Monad.Fix import Control.Monad.Zip import Control.Lens hiding ((<.>))+import Data.Binary as Binary+import Data.Bytes.Serial+ import Data.Complex (Complex((:+))) import Data.Data import Data.Distributive@@ -51,6 +54,7 @@ import Data.Functor.Bind import Data.Functor.Rep import Data.Hashable+import Data.Serialize as Cereal import GHC.Arr (Ix(..)) import qualified Data.Foldable as F import Data.Monoid@@ -554,3 +558,14 @@ instance NFData a => NFData (Quaternion a) where rnf (Quaternion a b) = rnf a `seq` rnf b++instance Serial1 Quaternion+instance Serial a => Serial (Quaternion a)++instance Binary a => Binary (Quaternion a) where+ put = serializeWith Binary.put+ get = deserializeWith Binary.get++instance Serialize a => Serialize (Quaternion a) where+ put = serializeWith Cereal.put+ get = deserializeWith Cereal.get
src/Linear/V.hs view
@@ -47,6 +47,8 @@ import Control.Monad.Fix import Control.Monad.Zip import Control.Lens as Lens+import Data.Binary as Binary+import Data.Bytes.Serial import Data.Data import Data.Distributive import Data.Foldable as Foldable@@ -56,6 +58,8 @@ import Data.Proxy #endif import Data.Reflection as R+import Data.Serialize as Cereal+import Data.Traversable (sequenceA) import Data.Vector as V import Foreign.Ptr import Foreign.Storable@@ -372,3 +376,18 @@ dataTypeOf _ = vDataType dataCast1 f = gcast1 f +instance Dim n => Serial1 (V n) where+ serializeWith = traverse_+ deserializeWith f = sequenceA $ pure f++instance (Dim n, Serial a) => Serial (V n a) where+ serialize = traverse_ serialize+ deserialize = sequenceA $ pure deserialize++instance (Dim n, Binary a) => Binary (V n a) where+ put = serializeWith Binary.put+ get = deserializeWith Binary.get++instance (Dim n, Serialize a) => Serialize (V n a) where+ put = serializeWith Cereal.put+ get = deserializeWith Cereal.get
src/Linear/V0.hs view
@@ -32,6 +32,8 @@ import Control.Lens import Control.Monad.Fix import Control.Monad.Zip+import Data.Binary -- binary+import Data.Bytes.Serial -- bytes import Data.Data import Data.Distributive import Data.Foldable@@ -40,6 +42,7 @@ import Data.Hashable import Data.Ix import Data.Semigroup+import Data.Serialize -- cereal import Foreign.Storable (Storable(..)) #if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ >= 702 import GHC.Generics (Generic)@@ -74,6 +77,17 @@ ,Generic1 #endif )++instance Serial1 V0+instance Serial (V0 a)++instance Binary (V0 a) where+ put V0 = return ()+ get = return V0++instance Serialize (V0 a) where+ put V0 = return ()+ get = return V0 instance Functor V0 where fmap _ V0 = V0
src/Linear/V1.hs view
@@ -40,6 +40,9 @@ import Control.Monad.Fix import Control.Monad.Zip import Control.Lens+import Data.Binary as Binary+import Data.Bytes.Serial+import Data.Serialize as Cereal import Data.Data import Data.Distributive import Data.Foldable@@ -308,3 +311,15 @@ {-# INLINE minBound #-} maxBound = pure maxBound {-# INLINE maxBound #-}++instance Serial1 V1+instance Serial a => Serial (V1 a)++instance Binary a => Binary (V1 a) where+ put = serializeWith Binary.put+ get = deserializeWith Binary.get++instance Serialize a => Serialize (V1 a) where+ put = serializeWith Cereal.put+ get = deserializeWith Cereal.get+
src/Linear/V2.hs view
@@ -37,6 +37,8 @@ import Control.Monad.Fix import Control.Monad.Zip import Control.Lens hiding ((<.>))+import Data.Binary as Binary+import Data.Bytes.Serial import Data.Data import Data.Distributive import Data.Foldable@@ -45,6 +47,7 @@ import Data.Functor.Rep import Data.Semigroup import Data.Semigroup.Foldable+import Data.Serialize as Cereal import Foreign.Ptr (castPtr) import Foreign.Storable (Storable(..)) import GHC.Arr (Ix(..))@@ -370,3 +373,14 @@ instance NFData a => NFData (V2 a) where rnf (V2 a b) = rnf a `seq` rnf b++instance Serial1 V2+instance Serial a => Serial (V2 a)++instance Binary a => Binary (V2 a) where+ put = serializeWith Binary.put+ get = deserializeWith Binary.get++instance Serialize a => Serialize (V2 a) where+ put = serializeWith Cereal.put+ get = deserializeWith Cereal.get
src/Linear/V3.hs view
@@ -38,6 +38,8 @@ import Control.Monad.Fix import Control.Monad.Zip import Control.Lens hiding ((<.>))+import Data.Binary as Binary -- binary+import Data.Bytes.Serial -- bytes import Data.Data import Data.Distributive import Data.Foldable@@ -46,6 +48,7 @@ import Data.Hashable import Data.Semigroup import Data.Semigroup.Foldable+import Data.Serialize as Cereal -- cereal import Foreign.Ptr (castPtr) import Foreign.Storable (Storable(..)) import GHC.Arr (Ix(..))@@ -393,3 +396,14 @@ instance NFData a => NFData (V3 a) where rnf (V3 a b c) = rnf a `seq` rnf b `seq` rnf c++instance Serial1 V3+instance Serial a => Serial (V3 a)++instance Binary a => Binary (V3 a) where+ put = serializeWith Binary.put+ get = deserializeWith Binary.get++instance Serialize a => Serialize (V3 a) where+ put = serializeWith Cereal.put+ get = deserializeWith Cereal.get
src/Linear/V4.hs view
@@ -45,6 +45,8 @@ import Control.Monad.Fix import Control.Monad.Zip import Control.Lens hiding ((<.>))+import Data.Binary as Binary+import Data.Bytes.Serial import Data.Data import Data.Distributive import Data.Foldable@@ -53,6 +55,7 @@ import Data.Hashable import Data.Semigroup import Data.Semigroup.Foldable+import Data.Serialize as Cereal import Foreign.Ptr (castPtr) import Foreign.Storable (Storable(..)) import GHC.Arr (Ix(..))@@ -540,3 +543,14 @@ instance NFData a => NFData (V4 a) where rnf (V4 a b c d) = rnf a `seq` rnf b `seq` rnf c `seq` rnf d++instance Serial1 V4+instance Serial a => Serial (V4 a)++instance Binary a => Binary (V4 a) where+ put = serializeWith Binary.put+ get = deserializeWith Binary.get++instance Serialize a => Serialize (V4 a) where+ put = serializeWith Cereal.put+ get = deserializeWith Cereal.get