diff --git a/Data/Vector/Sized.hs b/Data/Vector/Sized.hs
--- a/Data/Vector/Sized.hs
+++ b/Data/Vector/Sized.hs
@@ -434,3 +434,10 @@
   hash Nil = 0
   hash (a :- as) = foldl hashWithSalt (hash a) as
   hashWithSalt   = vecHashWithSalt
+
+ordinalVecs :: SNat n -> Vector (Ordinal n) n
+ordinalVecs SZ      = Nil
+ordinalVecs (SS sn) = OZ :- map OS (ordinalVecs sn)
+
+ifoldl :: (a -> Index n -> b -> a) -> a -> Vector b n -> a
+ifoldl fun a0 vs = foldl (\a (b, c) -> fun a b c) a0 $ zipSame (ordinalVecs $ sLength vs) vs
diff --git a/sized-vector.cabal b/sized-vector.cabal
--- a/sized-vector.cabal
+++ b/sized-vector.cabal
@@ -2,7 +2,7 @@
 -- documentation, see http://haskell.org/cabal/users-guide/
 
 name:                sized-vector
-version:             1.4.0.0
+version:             1.4.1.0
 synopsis:            Size-parameterized vector types and functions.
 description:         Size-parameterized vector types and functions using a data-type promotion.
 homepage:            https://github.com/konn/sized-vector
@@ -31,7 +31,7 @@
   if impl(ghc < 7.7)
     build-depends:     singletons               == 0.8.*
   if impl(ghc >= 7.7)
-    build-depends:     singletons               == 0.10.*
+    build-depends:     singletons               == 1.0.*
 
 -- Benchmark coercion-bench
 --   buildable:            False
