diff --git a/CHANGELOG.markdown b/CHANGELOG.markdown
--- a/CHANGELOG.markdown
+++ b/CHANGELOG.markdown
@@ -1,3 +1,12 @@
+0.6
+---
+* Lazier `R1`.
+* `MonadZip` instances
+
+0.5.1
+-----
+* Lazier `R`.
+
 0.5.0.1
 -------
 * Restore compatibility with GHC < 7.8
diff --git a/folds.cabal b/folds.cabal
--- a/folds.cabal
+++ b/folds.cabal
@@ -1,6 +1,6 @@
 name:          folds
 category:      Data, Comonads, Enumerator
-version:       0.5.0.1
+version:       0.6
 license:       BSD3
 cabal-version: >= 1.8
 license-file:  LICENSE
diff --git a/src/Data/Fold/L'.hs b/src/Data/Fold/L'.hs
--- a/src/Data/Fold/L'.hs
+++ b/src/Data/Fold/L'.hs
@@ -12,6 +12,7 @@
 import Control.Applicative
 import Control.Comonad
 import Control.Lens
+import Control.Monad.Zip
 import Data.Foldable
 import Data.Fold.Class
 import Data.Fold.Internal
@@ -132,6 +133,10 @@
 
   _ >> n = n
   {-# INLINE (>>) #-}
+
+instance MonadZip (L' a) where
+  mzipWith = liftA2
+  {-# INLINE mzipWith #-}
 
 instance Extend (L' a) where
   extended = extend
diff --git a/src/Data/Fold/L.hs b/src/Data/Fold/L.hs
--- a/src/Data/Fold/L.hs
+++ b/src/Data/Fold/L.hs
@@ -12,6 +12,7 @@
 import Control.Applicative
 import Control.Comonad
 import Control.Lens
+import Control.Monad.Zip
 import Data.Foldable
 import Data.Fold.Class
 import Data.Fold.Internal
@@ -137,6 +138,10 @@
 
   _ >> n = n
   {-# INLINE (>>) #-}
+
+instance MonadZip (L a) where
+  mzipWith = liftA2
+  {-# INLINE mzipWith #-}
 
 instance Extend (L a) where
   extended = extend
diff --git a/src/Data/Fold/L1.hs b/src/Data/Fold/L1.hs
--- a/src/Data/Fold/L1.hs
+++ b/src/Data/Fold/L1.hs
@@ -8,6 +8,7 @@
 import Control.Arrow
 import Control.Category
 import Control.Lens
+import Control.Monad.Zip
 import Data.Fold.Class
 import Data.Fold.Internal
 import Data.Functor.Apply
@@ -68,6 +69,10 @@
   {-# INLINE (>>=) #-}
   _ >> n = n
   {-# INLINE (>>) #-}
+
+instance MonadZip (L1 a) where
+  mzipWith = liftA2
+  {-# INLINE mzipWith #-}
 
 instance Semigroupoid L1 where
   o = (.)
diff --git a/src/Data/Fold/M.hs b/src/Data/Fold/M.hs
--- a/src/Data/Fold/M.hs
+++ b/src/Data/Fold/M.hs
@@ -15,6 +15,7 @@
 import Control.Applicative
 import Control.Comonad
 import Control.Lens
+import Control.Monad.Zip
 import Data.Fold.Class
 import Data.Fold.Internal
 import Data.Foldable hiding (sum, product)
@@ -141,6 +142,10 @@
 
   _ >> n = n
   {-# INLINE (>>) #-}
+
+instance MonadZip (M a) where
+  mzipWith = liftA2
+  {-# INLINE mzipWith #-}
 
 instance Extend (M a) where
   extended = extend
diff --git a/src/Data/Fold/M1.hs b/src/Data/Fold/M1.hs
--- a/src/Data/Fold/M1.hs
+++ b/src/Data/Fold/M1.hs
@@ -8,6 +8,7 @@
 import Control.Arrow
 import Control.Category
 import Control.Lens
+import Control.Monad.Zip
 import Data.Fold.Class
 import Data.Fold.Internal
 import Data.Functor.Apply
@@ -71,6 +72,10 @@
   {-# INLINE (>>=) #-}
   _ >> n = n
   {-# INLINE (>>) #-}
+
+instance MonadZip (M1 a) where
+  mzipWith = liftA2
+  {-# INLINE mzipWith #-}
 
 instance Semigroupoid M1 where
   o = (.)
diff --git a/src/Data/Fold/R.hs b/src/Data/Fold/R.hs
--- a/src/Data/Fold/R.hs
+++ b/src/Data/Fold/R.hs
@@ -11,6 +11,7 @@
 import Control.Applicative
 import Control.Comonad
 import Control.Lens
+import Control.Monad.Zip
 import Data.Foldable hiding (sum, product)
 import Data.Fold.Class
 import Data.Fold.Internal
@@ -108,13 +109,17 @@
   _ >> n = n
   {-# INLINE (>>) #-}
 
+instance MonadZip (R a) where
+  mzipWith = liftA2
+  {-# INLINE mzipWith #-}
+
 instance Applicative (R a) where
   pure b = R (\() -> b) (\_ () -> ()) ()
   {-# INLINE pure #-}
 
   R xf bxx xz <*> R ya byy yz = R
     (\(Pair' x y) -> xf x $ ya y)
-    (\b (Pair' x y) -> Pair' (bxx b x) (byy b y))
+    (\b ~(Pair' x y) -> Pair' (bxx b x) (byy b y))
     (Pair' xz yz)
   {-# INLINE (<*>) #-}
 
diff --git a/src/Data/Fold/R1.hs b/src/Data/Fold/R1.hs
--- a/src/Data/Fold/R1.hs
+++ b/src/Data/Fold/R1.hs
@@ -8,6 +8,7 @@
 import Control.Arrow
 import Control.Category
 import Control.Lens
+import Control.Monad.Zip
 import Data.Fold.Class
 import Data.Fold.Internal
 import Data.Functor.Apply
@@ -54,7 +55,7 @@
   {-# INLINE pure #-}
   R1 kf hf zf <*> R1 ka ha za = R1
     (\(Pair' x y) -> kf x (ka y))
-    (\a (Pair' x y) -> Pair' (hf a x) (ha a y))
+    (\a ~(Pair' x y) -> Pair' (hf a x) (ha a y))
     (\a -> Pair' (zf a) (za a))
   (<*) m = \ _ -> m
   {-# INLINE (<*) #-}
@@ -68,6 +69,10 @@
   {-# INLINE (>>=) #-}
   _ >> n = n
   {-# INLINE (>>) #-}
+
+instance MonadZip (R1 a) where
+  mzipWith = liftA2
+  {-# INLINE mzipWith #-}
 
 instance Semigroupoid R1 where
   o = (.)
