diff --git a/bench/Main.hs b/bench/Main.hs
--- a/bench/Main.hs
+++ b/bench/Main.hs
@@ -58,17 +58,17 @@
         func "primArray100" size primArray100
         func "primArray1000" size primArray1000
 
-        io "marray10" sizeMutable marray10
-        io "marray100" sizeMutable marray100
-        io "marray1000" sizeMutable marray1000
+        io "marray10" sizeMut marray10
+        io "marray100" sizeMut marray100
+        io "marray1000" sizeMut marray1000
 
-        io "msmallArray10" sizeMutable msmallArray10
-        io "msmallArray100" sizeMutable msmallArray100
-        io "msmallArray1000" sizeMutable msmallArray1000
+        io "msmallArray10" sizeMut msmallArray10
+        io "msmallArray100" sizeMut msmallArray100
+        io "msmallArray1000" sizeMut msmallArray1000
 
-        io "mprimArray10" sizeMutable mprimArray10
-        io "mprimArray100" sizeMutable mprimArray100
-        io "mprimArray1000" sizeMutable mprimArray1000
+        io "mprimArray10" sizeMut mprimArray10
+        io "mprimArray100" sizeMut mprimArray100
+        io "mprimArray1000" sizeMut mprimArray1000
       wgroup "null" $ do
         func "array10" null array10
         func "array100" null array100
diff --git a/contiguous.cabal b/contiguous.cabal
--- a/contiguous.cabal
+++ b/contiguous.cabal
@@ -1,6 +1,6 @@
 cabal-version: 2.0
 name: contiguous
-version: 0.6.1.1
+version: 0.6.2.0
 homepage: https://github.com/andrewthad/contiguous
 bug-reports: https://github.com/andrewthad/contiguous/issues
 author: Andrew Martin
diff --git a/src/Data/Primitive/Contiguous.hs b/src/Data/Primitive/Contiguous.hs
--- a/src/Data/Primitive/Contiguous.hs
+++ b/src/Data/Primitive/Contiguous.hs
@@ -154,6 +154,8 @@
     -- ** Zipping Folds
   , foldrZipWith
   , ifoldrZipWith
+  , foldlZipWith'
+  , ifoldlZipWith'
   , foldlZipWithM'
   , ifoldlZipWithM'
 
@@ -1858,6 +1860,39 @@
         else z
   in go 0
 {-# inline ifoldrZipWith #-}
+
+foldlZipWith' ::
+  ( Contiguous arr1
+  , Contiguous arr2
+  , Element arr1 a
+  , Element arr2 b
+  ) => (c -> a -> b -> c)
+    -> c
+    -> arr1 a
+    -> arr2 b
+    -> c
+foldlZipWith' f = ifoldlZipWith' (\_ x y c -> f x y c)
+{-# inline foldlZipWith' #-}
+
+ifoldlZipWith' ::
+  ( Contiguous arr1
+  , Contiguous arr2
+  , Element arr1 a
+  , Element arr2 b
+  ) => (Int -> c -> a -> b -> c)
+    -> c
+    -> arr1 a
+    -> arr2 b
+    -> c
+ifoldlZipWith' f !z !arr1 !arr2 =
+  let !sz = min (size arr1) (size arr2)
+      go !ix !acc = if ix == sz
+        then acc
+        else case index# arr1 ix of
+          (# x #) -> case index# arr2 ix of
+            (# y #) -> go (ix + 1) (f ix acc x y)
+  in go 0 z
+{-# inline ifoldlZipWith' #-}
 
 -- | Variant of 'foldlZipWithM\'' that provides the index of each pair of elements.
 ifoldlZipWithM' ::
