Generalise `Control.Monad.{when,unless,guard}`
[ghc.git] / libraries / base / GHC / Base.lhs
index e6e35f3..8b51c07 100644 (file)
@@ -493,17 +493,17 @@ original default.
 (=<<)           :: Monad m => (a -> m b) -> m a -> m b
 f =<< x         = x >>= f
 
--- | Conditional execution of monadic expressions. For example,
+-- | Conditional execution of 'Applicative' expressions. For example,
 --
 -- > when debug (putStrLn "Debugging")
 --
 -- will output the string @Debugging@ if the Boolean value @debug@
 -- is 'True', and otherwise do nothing.
-when    :: (Monad m) => Bool -> m () -> m ()
+when      :: (Applicative f) => Bool -> f () -> f ()
 {-# INLINEABLE when #-}
 {-# SPECIALISE when :: Bool -> IO () -> IO () #-}
 {-# SPECIALISE when :: Bool -> Maybe () -> Maybe () #-}
-when p s                = if p then s else return ()
+when p s  = if p then s else pure ()
 
 -- | Evaluate each action in the sequence from left to right,
 -- and collect the results.