diff --git a/library/PrimitiveExtras/IO.hs b/library/PrimitiveExtras/IO.hs
--- a/library/PrimitiveExtras/IO.hs
+++ b/library/PrimitiveExtras/IO.hs
@@ -25,3 +25,17 @@
             loop (succ index)
           else unsafeFreezeArray array
       in loop 0
+
+replicateArray :: Int -> IO a -> IO (Array a)
+replicateArray size elementIO =
+  do
+    array <- newArray size undefined
+    let
+      loop index =
+        if index < size
+          then do
+            element <- elementIO
+            writeArray array index element
+            loop (succ index)
+          else unsafeFreezeArray array
+      in loop 0
diff --git a/primitive-extras.cabal b/primitive-extras.cabal
--- a/primitive-extras.cabal
+++ b/primitive-extras.cabal
@@ -1,7 +1,7 @@
 name:
   primitive-extras
 version:
-  0.1.3
+  0.1.3.1
 category:
   Primitive
 synopsis:
