fixed-vector-hetero 0.3.0.0 → 0.3.1.0
raw patch · 4 files changed
+33/−6 lines, 4 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
+ Data.Vector.HFixed: replicateF :: (HVectorF v, Arity (ElemsF v)) => (forall a. f a) -> v f
+ Data.Vector.HFixed.Cont: replicateF :: Arity xs => (forall a. f a) -> ContVecF xs f
- Data.Vector.HFixed: zipMonoF :: (HVectorF v, ArityC c (ElemsF v)) => Proxy c -> (forall a. c a => f a -> f a -> f a) -> v f -> v f -> v f
+ Data.Vector.HFixed: zipMonoF :: (HVectorF v, ArityC c (ElemsF v)) => Proxy c -> (forall a. c a => f a -> g a -> h a) -> v f -> v g -> v h
- Data.Vector.HFixed.Cont: zipMonoF :: ArityC c xs => Proxy c -> (forall a. c a => f a -> f a -> f a) -> ContVecF xs f -> ContVecF xs f -> ContVecF xs f
+ Data.Vector.HFixed.Cont: zipMonoF :: ArityC c xs => Proxy c -> (forall a. c a => f a -> g a -> h a) -> ContVecF xs f -> ContVecF xs g -> ContVecF xs h
Files
- ChangeLog +7/−0
- Data/Vector/HFixed.hs +8/−1
- Data/Vector/HFixed/Cont.hs +17/−4
- fixed-vector-hetero.cabal +1/−1
ChangeLog view
@@ -1,3 +1,10 @@+Changes in 0.3.1.0++ * replicateF added++ * type signature of zipMonoF generalized++ Changes in 0.3.0.0 * HVector instances up to 32-element tuples
Data/Vector/HFixed.hs view
@@ -55,6 +55,7 @@ -- * Polymorphic values , replicate , replicateM+ , replicateF , zipMono , zipMonoF , zipFold@@ -364,6 +365,12 @@ {-# INLINE replicateM #-} replicateM c x = liftM C.vector $ C.replicateM c x +replicateF :: (HVectorF v, Arity (ElemsF v))+ => (forall a. f a) -> v f+{-# INLINE replicateF #-}+replicateF x = C.vectorF $ C.replicateF x++ -- | Unfold vector. unfoldr :: (HVector v, ArityC c (Elems v)) => Proxy c -> (forall a. c a => b -> (a,b)) -> b -> v@@ -379,7 +386,7 @@ -- | Zip two heterogeneous vectors zipMonoF :: (HVectorF v, ArityC c (ElemsF v))- => Proxy c -> (forall a. c a => f a -> f a -> f a) -> v f -> v f -> v f+ => Proxy c -> (forall a. c a => f a -> g a -> h a) -> v f -> v g -> v h {-# INLINE zipMonoF #-} zipMonoF c f v u = C.vectorF $ C.zipMonoF c f (C.cvecF v) (C.cvecF u)
Data/Vector/HFixed/Cont.hs view
@@ -59,6 +59,7 @@ -- * Polymorphic values , replicate , replicateM+ , replicateF , zipMono , zipMonoF , zipFold@@ -401,6 +402,14 @@ step :: forall a as. WitAllInstances c (a ': as) -> m (a, WitAllInstances c as) step (WitAllInstancesCons d) = do { x <- act; return (x,d) } +replicateF :: forall f xs. Arity xs => (forall a. f a) -> ContVecF xs f+replicateF f = applyTy+ (\T_replicateF -> (f, T_replicateF))+ (T_replicateF :: T_replicateF xs)++data T_replicateF (xs :: [*]) = T_replicateF++ -- | Right fold over vector foldr :: forall xs c b. (ArityC c xs) => Proxy c -> (forall a. c a => a -> b -> b) -> b -> ContVec xs -> b@@ -479,15 +488,19 @@ data T_zipMono c xs = T_zipMono (VecList xs) (VecList xs) (WitAllInstances c xs) -- | Zip two heterogeneous vectors-zipMonoF :: forall xs f c. (ArityC c xs)- => Proxy c -> (forall a. c a => f a -> f a -> f a) -> ContVecF xs f -> ContVecF xs f -> ContVecF xs f+zipMonoF :: forall xs f g h c. (ArityC c xs)+ => Proxy c+ -> (forall a. c a => f a -> g a -> h a)+ -> ContVecF xs f+ -> ContVecF xs g+ -> ContVecF xs h {-# INLINE zipMonoF #-} zipMonoF _ f cvecA cvecB = applyTy (\(T_zipMonoF (ConsF a va) (ConsF b vb) (WitAllInstancesCons w)) -> (f a b, T_zipMonoF va vb w))- (T_zipMonoF (vectorF cvecA) (vectorF cvecB) witAllInstances :: T_zipMonoF c f xs)+ (T_zipMonoF (vectorF cvecA) (vectorF cvecB) witAllInstances :: T_zipMonoF c f g xs) -data T_zipMonoF c f xs = T_zipMonoF (VecListF xs f) (VecListF xs f) (WitAllInstances c xs)+data T_zipMonoF c f g xs = T_zipMonoF (VecListF xs f) (VecListF xs g) (WitAllInstances c xs) -- | Zip vector and fold result using monoid
fixed-vector-hetero.cabal view
@@ -1,5 +1,5 @@ Name: fixed-vector-hetero-Version: 0.3.0.0+Version: 0.3.1.0 Synopsis: Generic heterogeneous vectors Description: Generic heterogeneous vectors