diff --git a/library/PrimitiveExtras/Pure.hs b/library/PrimitiveExtras/Pure.hs
--- a/library/PrimitiveExtras/Pure.hs
+++ b/library/PrimitiveExtras/Pure.hs
@@ -9,3 +9,10 @@
 {-| Get length of the outer dimension of a primitive multi array -}
 primMultiArrayOuterLength :: PrimMultiArray a -> Int
 primMultiArrayOuterLength (PrimMultiArray outerDimension) = sizeofUnliftedArray outerDimension
+
+oneHotPrimArray :: Prim a => Int {-^ Size -} -> Int {-^ Index -} -> a -> PrimArray a
+oneHotPrimArray size index value =
+  runST $ do
+    marr <- newPrimArray size
+    writePrimArray marr index value
+    unsafeFreezePrimArray marr
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.6
+  0.1.7
 category:
   Primitive
 synopsis:
