diff --git a/src/Control/Monad/ToolsYj.hs b/src/Control/Monad/ToolsYj.hs
--- a/src/Control/Monad/ToolsYj.hs
+++ b/src/Control/Monad/ToolsYj.hs
@@ -2,6 +2,7 @@
 
 module Control.Monad.ToolsYj where
 
+import Control.Monad.Fix
 import Data.Bool
 
 whenDef :: Applicative m => a -> Bool -> m a -> m a
@@ -12,3 +13,6 @@
 
 whenMaybeDef :: Applicative m => b -> Maybe a -> (a -> m b) -> m b
 whenMaybeDef = flip . maybe . pure
+
+doWhile_ :: Monad m => m Bool -> m ()
+doWhile_ a = fix $ (a >>=) . bool (pure ())
diff --git a/tools-yj.cabal b/tools-yj.cabal
--- a/tools-yj.cabal
+++ b/tools-yj.cabal
@@ -5,7 +5,7 @@
 -- see: https://github.com/sol/hpack
 
 name:           tools-yj
-version:        0.1.0.24
+version:        0.1.0.25
 synopsis:       Tribial tools
 description:    Please see the README on GitHub at <https://github.com/YoshikuniJujo/tools-yj#readme>
 category:       Tools
