-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | some tools for Monad, List, Tuple and so on.
--   
--   ifM, whenM, unlessM, doWhile, doWhile_ and so on.
@package yjtools
@version 0.9.18

module Control.Applicative.Tools
(<.>) :: Functor f => (a -> b) -> (c -> f a) -> c -> f b
infixr 9 <.>

module Control.Monad.Tools
ifM :: Monad m => m Bool -> m a -> m a -> m a
whenM :: Monad m => m Bool -> m () -> m ()
unlessM :: Monad m => m Bool -> m () -> m ()
doWhile_ :: Monad m => m Bool -> m ()
doWhile :: Monad m => a -> (a -> m (a, Bool)) -> m a
doUntil_ :: Monad m => m Bool -> m ()
doUntil :: Monad m => a -> (a -> m (a, Bool)) -> m a
for_ :: Monad m => a -> (a -> Bool) -> (a -> a) -> (a -> m b) -> m ()
for :: Monad m => a -> (a -> Bool) -> (a -> a) -> b -> (a -> b -> m b) -> m b
filterM :: Monad m => (a -> m Bool) -> [a] -> m [a]
repeatM :: Monad m => m a -> m [a]
repeatM_ :: Monad m => m a -> m ()
skipRet :: Monad m => m b -> a -> m a

module Data.Bool.Tools
(&&&) :: Monad m => m Bool -> m Bool -> m Bool
(|||) :: Monad m => m Bool -> m Bool -> m Bool
whether :: a -> a -> Bool -> a

module Data.Function.Tools
const2 :: a -> b -> c -> a
const3 :: a -> b -> c -> d -> a
applyWhen :: Bool -> (a -> a) -> a -> a
applyUnless :: Bool -> (a -> a) -> a -> a
apply2way :: (a -> b -> c) -> (d -> a) -> (d -> b) -> d -> c

module Data.IORef.Tools
atomicModifyIORef_ :: IORef a -> (a -> a) -> IO ()

module Data.List.Tools
takeUntil :: (a -> Bool) -> [a] -> [a]
dropUntil :: (a -> Bool) -> [a] -> [a]
mulLists :: [[a]] -> [[a]]
defaultElem :: a -> [a] -> [a]
isIncludedElem :: Eq a => [a] -> [a] -> Bool
setAt :: [a] -> Int -> a -> [a]
modifyAt :: [a] -> Int -> (a -> a) -> [a]

module Data.Tuple.Tools
curry3 :: ((a, b, c) -> d) -> a -> b -> c -> d
uncurry3 :: (a -> b -> c -> d) -> (a, b, c) -> d
rotate :: Floating a => a -> (a, a) -> (a, a)
