module Control.Eff.MySQL.Helper
( askLift0
, askLift
, askLift2
, askLift3
) where
import Control.Eff (Eff, Member, SetMember)
import Control.Eff.Lift (Lift, lift)
import Control.Eff.Reader.Strict (Reader, ask)
import Data.Typeable (Typeable, Typeable1)
askLift0
:: (Typeable a, Typeable1 m, SetMember Lift (Lift m) r, Member (Reader a) r)
=> (a -> m b) -> Eff r b
askLift0 f = ask >>= lift . f
askLift
:: (Typeable a, Typeable1 m, SetMember Lift (Lift m) r, Member (Reader a) r)
=> (a -> t -> m b) -> t -> Eff r b
askLift f a = ask >>= \x -> lift (f x a)
askLift2
:: (Typeable a, Typeable1 m, SetMember Lift (Lift m) r, Member (Reader a) r)
=> (a -> t -> t1 -> m b) -> t -> t1 -> Eff r b
askLift2 f a b = ask >>= \x -> lift (f x a b)
askLift3
:: (Typeable a, Typeable1 m, SetMember Lift (Lift m) r, Member (Reader a) r)
=> (a -> t -> t1 -> t2 -> m b) -> t -> t1 -> t2 -> Eff r b
askLift3 f a b c = ask >>= \x -> lift (f x a b c)