on master help sign in
Merge pull request #4338 from aiya000/feature/effects-runPureEnv

Add Effects.runPureEnv

commitc1d7e65135f02041e7aff9d07033a1882c520191 authorAhmad Salim Al-Sibahi <asal@itu.dk> dateMon 19 Feb 2018, 08:54 (9 years ago) parenta6037b9f7f5836
1 file changed+6
libs/effects/Effects.idr+6
libs/effects/Effects.idr+6
@@ -434,11 +434,17 @@ runPureInit env prog = eff env prog (\r, env => r)
434434runWith : (a -> m a) -> Env m xs -> EffM m a xs xs' -> m a
435435runWith inj env prog = eff env prog (\r, env => inj r)
436436
437+||| Similar to 'runInit', but take the result of `Env`.
437438%no_implicit
438439runEnv : Applicative m => Env m xs -> EffM m a xs xs' ->
439440 m (x : a ** Env m (xs' x))
440441runEnv env prog = eff env prog (\r, env => pure (r ** env))
441442
443+||| Similar to 'runEnv', but the context (m) is 'pure'
444+%no_implicit
445+runPureEnv : (env : Env Basics.id xs) -> (prog : EffM Basics.id a xs xs') -> (x : a ** Env Basics.id (xs' x))
446+runPureEnv env prog = eff env prog (\r, env => (r ** env))
447+
442448-- ----------------------------------------------- [ some higher order things ]
443449
444450mapE : (a -> EffM m b xs (\_ => xs)) -> List a -> EffM m (List b) xs (\_ => xs)