diff --git a/Data/Conduit/List.hs b/Data/Conduit/List.hs
--- a/Data/Conduit/List.hs
+++ b/Data/Conduit/List.hs
@@ -13,6 +13,7 @@
       sourceList
     , sourceNull
     , unfold
+    , unfoldM
     , enumFromTo
     , iterate
       -- * Sinks
@@ -91,6 +92,22 @@
   where
     go seed =
         case f seed of
+            Just (a, seed') -> yield a >> go seed'
+            Nothing -> return ()
+
+-- | A monadic unfold.
+--
+-- Since 1.1.2
+unfoldM :: Monad m
+        => (b -> m (Maybe (a, b)))
+        -> b
+        -> Producer m a
+unfoldM f =
+    go
+  where
+    go seed = do
+        mres <- lift $ f seed
+        case mres of
             Just (a, seed') -> yield a >> go seed'
             Nothing -> return ()
 
diff --git a/conduit.cabal b/conduit.cabal
--- a/conduit.cabal
+++ b/conduit.cabal
@@ -1,5 +1,5 @@
 Name:                conduit
-Version:             1.1.1.1
+Version:             1.1.2
 Synopsis:            Streaming data processing library.
 Description:
     @conduit@ is a solution to the streaming data problem, allowing for production, transformation, and consumption of streams of data in constant memory. It is an alternative to lazy I\/O which guarantees deterministic resource handling, and fits in the same general solution space as @enumerator@\/@iteratee@ and @pipes@. For a tutorial, please visit <https://haskell.fpcomplete.com/user/snoyberg/library-documentation/conduit-overview>.
diff --git a/test/main.hs b/test/main.hs
--- a/test/main.hs
+++ b/test/main.hs
@@ -143,6 +143,15 @@
             let y = DL.unfoldr f seed
             x `shouldBe` y
 
+    describe "unfoldM" $ do
+        it "works" $ do
+            let f 0 = Nothing
+                f i = Just (show i, i - 1)
+                seed = 10 :: Int
+            x <- CL.unfoldM (return . f) seed C.$$ CL.consume
+            let y = DL.unfoldr f seed
+            x `shouldBe` y
+
     describe "Monoid instance for Source" $ do
         it "mappend" $ do
             x <- runResourceT $ (CL.sourceList [1..5 :: Int] `mappend` CL.sourceList [6..10]) C.$$ CL.fold (+) 0
