diff --git a/deferred-folds.cabal b/deferred-folds.cabal
--- a/deferred-folds.cabal
+++ b/deferred-folds.cabal
@@ -1,5 +1,5 @@
 name: deferred-folds
-version: 0.9.17
+version: 0.9.18
 category: Folding
 synopsis: Abstractions over deferred folds
 description:
@@ -45,7 +45,7 @@
     hashable >=1 && <2,
     primitive >=0.6.4 && <0.8,
     text >=1.2 && <1.3,
-    transformers >=0.5 && <0.6,
+    transformers >=0.5 && <0.7,
     unordered-containers >=0.2 && <0.3,
     vector >=0.12 && <0.13
 
diff --git a/library/DeferredFolds/Defs/Unfoldr.hs b/library/DeferredFolds/Defs/Unfoldr.hs
--- a/library/DeferredFolds/Defs/Unfoldr.hs
+++ b/library/DeferredFolds/Defs/Unfoldr.hs
@@ -3,6 +3,7 @@
 
 import DeferredFolds.Prelude hiding (fold, reverse)
 import DeferredFolds.Types
+import qualified DeferredFolds.Prelude as Prelude
 import qualified Data.Map.Strict as Map
 import qualified Data.IntMap.Strict as IntMap
 import qualified Data.IntSet as IntSet
@@ -54,7 +55,7 @@
 
 instance Traversable Unfoldr where
   traverse f (Unfoldr unfoldr) =
-    unfoldr (\a next -> cons <$> f a <*> next) (pure mempty)
+    unfoldr (\a next -> liftA2 cons (f a) next) (pure mempty)
 
 instance Eq a => Eq (Unfoldr a) where
   (==) left right = toList left == toList right
@@ -276,6 +277,10 @@
 -}
 reverse :: Unfoldr a -> Unfoldr a
 reverse (Unfoldr unfoldr) = Unfoldr $ \ step -> unfoldr (\ a f -> f . step a) id
+
+zipWith :: (a -> b -> c) -> Unfoldr a -> Unfoldr b -> Unfoldr c
+zipWith f l r =
+  Prelude.zipWith f (toList l) (toList r) & foldable
 
 {-|
 Lift into an unfold, which produces pairs with index.
