diff --git a/src/Control/Monad/ToolsYj.hs b/src/Control/Monad/ToolsYj.hs
new file mode 100644
--- /dev/null
+++ b/src/Control/Monad/ToolsYj.hs
@@ -0,0 +1,14 @@
+{-# OPTIONS_GHC -Wall -fno-warn-tabs #-}
+
+module Control.Monad.ToolsYj where
+
+import Data.Bool
+
+whenDef :: Applicative m => a -> Bool -> m a -> m a
+whenDef = flip . bool . pure
+
+whenMaybe :: Applicative m => Maybe a -> (a -> m ()) -> m ()
+whenMaybe = flip . maybe $ pure ()
+
+whenMaybeDef :: Applicative m => b -> Maybe a -> (a -> m b) -> m b
+whenMaybeDef = flip . maybe . pure
diff --git a/tools-yj.cabal b/tools-yj.cabal
--- a/tools-yj.cabal
+++ b/tools-yj.cabal
@@ -1,11 +1,11 @@
 cabal-version: 2.2
 
--- This file has been generated from package.yaml by hpack version 0.37.0.
+-- This file has been generated from package.yaml by hpack version 0.38.0.
 --
 -- see: https://github.com/sol/hpack
 
 name:           tools-yj
-version:        0.1.0.23
+version:        0.1.0.24
 synopsis:       Tribial tools
 description:    Please see the README on GitHub at <https://github.com/YoshikuniJujo/tools-yj#readme>
 category:       Tools
@@ -28,6 +28,7 @@
 library
   exposed-modules:
       Control.Concurrent.STM.ToolsYj
+      Control.Monad.ToolsYj
       Data.Bits.ToolsYj
       Data.Bool.ToolsYj
       Data.Either.ToolsYj
