module Control.Eternal.Syntax.Lift
  ( liftM_
  , liftM2_
  , liftM3_
  , liftM4_
  ) where

import Control.Monad

liftM_ :: Monad m => (a1 -> m a) -> m a1 -> m a
liftM_ a1 r = join ( liftM a1 r )

liftM2_ :: Monad m => (a1 -> a2 -> m a) -> m a1 -> m a2 -> m a
liftM2_ a1 a2 r = join ( liftM2 a1 a2 r )

liftM3_ :: Monad m => (a1 -> a2 -> a3 -> m a) -> m a1 -> m a2 -> m a3 -> m a
liftM3_ a1 a2 a3 r = join ( liftM3 a1 a2 a3 r )

liftM4_ :: Monad m => (a1 -> a2 -> a3 -> a4 -> m a) -> m a1 -> m a2 -> m a3 -> m a4 -> m a
liftM4_ a1 a2 a3 a4 r = join ( liftM4 a1 a2 a3 a4 r )