blob: c5bc134cc21869ece16e4d22c984b08a695b2737 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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
|