From 9bffd435230514c00177a315bf65d9c13969f7dc Mon Sep 17 00:00:00 2001 From: Gregor Kleen Date: Thu, 28 Jul 2016 23:32:02 +0200 Subject: cleanup --- events/src/Events/Eval.hs | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 events/src/Events/Eval.hs (limited to 'events/src/Events/Eval.hs') diff --git a/events/src/Events/Eval.hs b/events/src/Events/Eval.hs new file mode 100644 index 0000000..c5bc134 --- /dev/null +++ b/events/src/Events/Eval.hs @@ -0,0 +1,16 @@ +module Events.Eval + ( evaluate + ) where + +import Control.Monad.Fix (MonadFix(mfix)) + +import Events.Types + +import Data.Maybe (catMaybes) + +import Control.Lens + +evaluate :: MonadFix m => (Maybe Object -> StateT EvalCtx m Bool) -> Eval m () -> m [Object] +evaluate predicate x = catMaybes <$> mfix x' + where + x' = evalStateT (foldNDT predicate (preview objCtx <$> execStateT x def)) . flip (set ctxEvents) def . catMaybes -- cgit v1.2.3