hat-2.7.0.1: Hat/Control/Monad.hs
module Hat.Control.Monad
(Functor(gfmap,sfmap),Monad((!>>=),(!>>),greturn,gfail,(|>>=),(|>>),sreturn
,sfail),MonadPlus(gmzero,gmplus,smzero,smplus),gmapM,amapM,hmapM,gmapM_
,amapM_,hmapM_,gforM,gforM_,gsequence,gsequence_,(!=<<),(+=<<),(*=<<),(!>=>)
,(+>=>),(*>=>),(!<=<),gforever,aforever,hforever,gvoid,gjoin,ajoin,hjoin
,gmsum,amsum,hmsum,gfilterM,afilterM,hfilterM,gmapAndUnzipM,amapAndUnzipM
,hmapAndUnzipM,gzipWithM,azipWithM,hzipWithM,gzipWithM_,azipWithM_
,hzipWithM_,gfoldM,afoldM,hfoldM,gfoldM_,afoldM_,hfoldM_,greplicateM
,areplicateM,hreplicateM,greplicateM_,areplicateM_,hreplicateM_,gguard
,aguard,hguard,gwhen,awhen,hwhen,gunless,aunless,hunless,gliftM,aliftM
,hliftM,gliftM2,aliftM2,hliftM2,gliftM3,aliftM3,hliftM3,gliftM4,aliftM4
,hliftM4,gliftM5,aliftM5,hliftM5,gap) where
import qualified Hat.PreludeBasic
import qualified Prelude
import Hat.Hack
import qualified Hat.Hat as T
import Hat.Hat (WrapVal(wrapVal))
import Hat.Prelude
import Hat.Monad
gforM ::
Monad m =>
T.RefSrcPos ->
T.RefExp -> T.R (T.Fun (T.List a) (T.Fun (T.Fun a (m b)) (m (T.List b))))
sforM ::
Monad m => T.R (T.Fun (T.List a) (T.Fun (T.Fun a (m b)) (m (T.List b))))
gforM pforM p = T.uconstUse pforM p sforM
sforM =
T.uconstDef T.mkRoot aforM
(\ p -> T.uap1 T.mkNoSrcPos p (gflip T.mkNoSrcPos p) (gmapM T.mkNoSrcPos p))
gforM_ ::
Monad m =>
T.RefSrcPos ->
T.RefExp -> T.R (T.Fun (T.List a) (T.Fun (T.Fun a (m b)) (m T.Tuple0)))
sforM_ :: Monad m => T.R (T.Fun (T.List a) (T.Fun (T.Fun a (m b)) (m T.Tuple0)))
gforM_ pforM_ p = T.uconstUse pforM_ p sforM_
sforM_ =
T.uconstDef T.mkRoot aforM_
(\ p ->
T.uap1 T.mkNoSrcPos p (gflip T.mkNoSrcPos p) (gmapM_ T.mkNoSrcPos p))
(!>=>) ::
Monad m =>
T.RefSrcPos ->
T.RefExp ->
T.R (T.Fun (T.Fun a (m b)) (T.Fun (T.Fun b (m c)) (T.Fun a (m c))))
(*>=>) ::
Monad m =>
(T.R (T.Fun a (m b))) ->
(T.R (T.Fun b (m c))) -> T.RefExp -> T.R (T.Fun a (m c))
(!>=>) (%>=>) p = T.ufun2 (+>=>) (%>=>) p (*>=>)
(*>=>) ff fg p =
T.ufun1 T.mkLambda T.mkNoSrcPos p
(\ fx p ->
T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !>>= p) (T.uap1 T.mkNoSrcPos p ff fx)
fg)
(!<=<) ::
Monad m =>
T.RefSrcPos ->
T.RefExp ->
T.R (T.Fun (T.Fun b (m c)) (T.Fun (T.Fun a (m b)) (T.Fun a (m c))))
(|<=<) ::
Monad m => T.R (T.Fun (T.Fun b (m c)) (T.Fun (T.Fun a (m b)) (T.Fun a (m c))))
(!<=<) (%<=<) p = T.uconstUse (%<=<) p (|<=<)
(|<=<) =
T.uconstDef T.mkRoot (+<=<)
(\ p -> T.uap1 T.mkNoSrcPos p (gflip T.mkNoSrcPos p) (T.mkNoSrcPos !>=> p))
gforever :: Monad m => T.RefSrcPos -> T.RefExp -> T.R (T.Fun (m a) (m b))
hforever :: Monad m => (T.R (m a)) -> T.RefExp -> T.R (m b)
gforever pforever p = T.ufun1 aforever pforever p hforever
hforever fa p =
let
ga' pa' p = T.uconstUse pa' p sa'
sa' =
T.uconstDef p a31v19v31v30a'
(\ p ->
T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !>> p) fa (ga' T.mkNoSrcPos p)) in
(ga' T.mkNoSrcPos p)
gvoid :: Functor f => T.RefSrcPos -> T.RefExp -> T.R (T.Fun (f a) (f T.Tuple0))
svoid :: Functor f => T.R (T.Fun (f a) (f T.Tuple0))
gvoid pvoid p = T.uconstUse pvoid p svoid
svoid =
T.uconstDef T.mkRoot avoid
(\ p ->
T.uap1 T.mkNoSrcPos p (gfmap T.mkNoSrcPos p)
(T.uap1 T.mkNoSrcPos p (gconst T.mkNoSrcPos p)
(T.con0 T.mkNoSrcPos p T.Tuple0 T.aTuple0)))
gfoldM_ ::
Monad m =>
T.RefSrcPos ->
T.RefExp ->
T.R
(T.Fun (T.Fun a (T.Fun b (m a)))
(T.Fun a (T.Fun (T.List b) (m T.Tuple0))))
hfoldM_ ::
Monad m =>
(T.R (T.Fun a (T.Fun b (m a)))) ->
(T.R a) -> (T.R (T.List b)) -> T.RefExp -> T.R (m T.Tuple0)
gfoldM_ pfoldM_ p = T.ufun3 afoldM_ pfoldM_ p hfoldM_
hfoldM_ ff fa fxs p =
T.uap2 T.mkNoSrcPos p (T.mkNoSrcPos !>> p)
(T.uwrapForward p (hfoldM ff fa fxs p))
(T.uap1 T.mkNoSrcPos p (greturn T.mkNoSrcPos p)
(T.con0 T.mkNoSrcPos p T.Tuple0 T.aTuple0))
greplicateM ::
Monad m =>
T.RefSrcPos -> T.RefExp -> T.R (T.Fun Int (T.Fun (m a) (m (T.List a))))
hreplicateM ::
Monad m => (T.R Int) -> (T.R (m a)) -> T.RefExp -> T.R (m (T.List a))
greplicateM preplicateM p = T.ufun2 areplicateM preplicateM p hreplicateM
hreplicateM fn fx p =
T.uap1 T.mkNoSrcPos p (gsequence T.mkNoSrcPos p)
(T.uwrapForward p (hreplicate fn fx p))
greplicateM_ ::
Monad m =>
T.RefSrcPos -> T.RefExp -> T.R (T.Fun Int (T.Fun (m a) (m T.Tuple0)))
hreplicateM_ ::
Monad m => (T.R Int) -> (T.R (m a)) -> T.RefExp -> T.R (m T.Tuple0)
greplicateM_ preplicateM_ p = T.ufun2 areplicateM_ preplicateM_ p hreplicateM_
hreplicateM_ fn fx p =
T.uap1 T.mkNoSrcPos p (gsequence_ T.mkNoSrcPos p)
(T.uwrapForward p (hreplicate fn fx p))
tControl_Monad = T.mkModule "Control.Monad" "Control/Monad.hs" Prelude.False
aforM = T.mkVariable tControl_Monad 150001 150027 3 0 "forM" Prelude.False
aforM_ = T.mkVariable tControl_Monad 190001 190028 3 0 "forM_" Prelude.False
(+>=>) = T.mkVariable tControl_Monad 230003 230005 3 2 ">=>" Prelude.False
(+<=<) = T.mkVariable tControl_Monad 270002 270023 3 0 "<=<" Prelude.False
aforever = T.mkVariable tControl_Monad 310001 310036 3 1 "forever" Prelude.False
avoid = T.mkVariable tControl_Monad 350001 350022 3 0 "void" Prelude.False
afoldM_ = T.mkVariable tControl_Monad 390001 390046 3 3 "foldM_" Prelude.False
areplicateM =
T.mkVariable tControl_Monad 440001 440043 3 2 "replicateM" Prelude.False
areplicateM_ =
T.mkVariable tControl_Monad 480001 480044 3 2 "replicateM_" Prelude.False
a31v19v31v30a' = T.mkVariable tControl_Monad 310019 310030 3 0 "a'" Prelude.True