summaryrefslogtreecommitdiff
path: root/events/src/Events/Eval.hs
diff options
context:
space:
mode:
authorGregor Kleen <pngwjpgh@users.noreply.github.com>2016-07-30 17:05:49 +0200
committerGregor Kleen <pngwjpgh@users.noreply.github.com>2016-07-30 17:05:49 +0200
commite1c7ed58aacb46c8204461841d29cb790cdf76e7 (patch)
tree2cf23d3f8df2f8385dbc5cbf6c351f5405653ccc /events/src/Events/Eval.hs
parent9bffd435230514c00177a315bf65d9c13969f7dc (diff)
downloadevents-e1c7ed58aacb46c8204461841d29cb790cdf76e7.tar
events-e1c7ed58aacb46c8204461841d29cb790cdf76e7.tar.gz
events-e1c7ed58aacb46c8204461841d29cb790cdf76e7.tar.bz2
events-e1c7ed58aacb46c8204461841d29cb790cdf76e7.tar.xz
events-e1c7ed58aacb46c8204461841d29cb790cdf76e7.zip
code cleanup
Diffstat (limited to 'events/src/Events/Eval.hs')
-rw-r--r--events/src/Events/Eval.hs14
1 files changed, 12 insertions, 2 deletions
diff --git a/events/src/Events/Eval.hs b/events/src/Events/Eval.hs
index c5bc134..280c577 100644
--- a/events/src/Events/Eval.hs
+++ b/events/src/Events/Eval.hs
@@ -1,5 +1,9 @@
1{-# LANGUAGE ViewPatterns #-}
2
1module Events.Eval 3module Events.Eval
2 ( evaluate 4 ( evaluate
5 , ordPredicate
6 , module Data.Ord
3 ) where 7 ) where
4 8
5import Control.Monad.Fix (MonadFix(mfix)) 9import Control.Monad.Fix (MonadFix(mfix))
@@ -10,7 +14,13 @@ import Data.Maybe (catMaybes)
10 14
11import Control.Lens 15import Control.Lens
12 16
13evaluate :: MonadFix m => (Maybe Object -> StateT EvalCtx m Bool) -> Eval m () -> m [Object] 17import Data.Ord (Ordering(..))
18
19evaluate :: MonadFix m => (Maybe Object -> ReaderT EvalCtx m Bool) -> Eval m () -> m [Object]
14evaluate predicate x = catMaybes <$> mfix x' 20evaluate predicate x = catMaybes <$> mfix x'
15 where 21 where
16 x' = evalStateT (foldNDT predicate (preview objCtx <$> execStateT x def)) . flip (set ctxEvents) def . catMaybes 22 x' = runReaderT (foldNDT predicate (preview objCtx <$> execStateT x def)) . flip (set ctxEvents) def . catMaybes
23
24ordPredicate :: Applicative m => (Object -> Ordering) -> (Maybe Object -> m Bool)
25ordPredicate _ Nothing = pure True
26ordPredicate f (Just (f -> o)) = pure $ o <= EQ