diff --git a/ChangeLog b/ChangeLog
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
diff --git a/Data/Vector/HFixed.hs b/Data/Vector/HFixed.hs
--- a/Data/Vector/HFixed.hs
+++ b/Data/Vector/HFixed.hs
@@ -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)
diff --git a/Data/Vector/HFixed/Cont.hs b/Data/Vector/HFixed/Cont.hs
--- a/Data/Vector/HFixed/Cont.hs
+++ b/Data/Vector/HFixed/Cont.hs
@@ -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
diff --git a/fixed-vector-hetero.cabal b/fixed-vector-hetero.cabal
--- a/fixed-vector-hetero.cabal
+++ b/fixed-vector-hetero.cabal
@@ -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
