summaryrefslogtreecommitdiff
path: root/events/src/Events/Types/NDT.hs
diff options
context:
space:
mode:
authorGregor Kleen <pngwjpgh@users.noreply.github.com>2016-08-05 15:51:20 +0200
committerGregor Kleen <pngwjpgh@users.noreply.github.com>2016-08-05 15:51:20 +0200
commit95b623a3ebaa115b6ef889032854b355a010a037 (patch)
tree6942e4a77881ed30fb8d415a8a8b3042a75dd8e3 /events/src/Events/Types/NDT.hs
parentaed23962edbeded10349e00fed3cea4e0639ae97 (diff)
downloadevents-95b623a3ebaa115b6ef889032854b355a010a037.tar
events-95b623a3ebaa115b6ef889032854b355a010a037.tar.gz
events-95b623a3ebaa115b6ef889032854b355a010a037.tar.bz2
events-95b623a3ebaa115b6ef889032854b355a010a037.tar.xz
events-95b623a3ebaa115b6ef889032854b355a010a037.zip
cleanup
Diffstat (limited to 'events/src/Events/Types/NDT.hs')
-rw-r--r--events/src/Events/Types/NDT.hs10
1 files changed, 2 insertions, 8 deletions
diff --git a/events/src/Events/Types/NDT.hs b/events/src/Events/Types/NDT.hs
index a417029..c37d47c 100644
--- a/events/src/Events/Types/NDT.hs
+++ b/events/src/Events/Types/NDT.hs
@@ -12,22 +12,16 @@ module Events.Types.NDT
12 12
13import Data.Monoid 13import Data.Monoid
14import Data.Foldable (foldr) 14import Data.Foldable (foldr)
15import Data.Maybe
16import Data.Either
17import Data.Bool (bool) 15import Data.Bool (bool)
18 16
19import Control.Applicative (Alternative) 17import Control.Applicative (Alternative)
20import qualified Control.Applicative as Alt (Alternative(..)) 18import qualified Control.Applicative as Alt (Alternative(..))
21import Control.Monad 19import Control.Monad
22import Control.Monad.Identity
23 20
24import Control.Monad.Trans 21import Control.Monad.Trans
25import Control.Monad.Reader (MonadReader(..)) 22import Control.Monad.Reader (MonadReader(..))
26import Control.Monad.Trans.Maybe
27import Control.Monad.Catch (MonadThrow(..)) 23import Control.Monad.Catch (MonadThrow(..))
28 24
29import Debug.Trace
30
31data NDT m a where 25data NDT m a where
32 NDTBind :: NDT m a -> (a -> NDT m b) -> NDT m b 26 NDTBind :: NDT m a -> (a -> NDT m b) -> NDT m b
33 NDTCons :: m (Maybe (a, NDT m a)) -> NDT m a 27 NDTCons :: m (Maybe (a, NDT m a)) -> NDT m a
@@ -37,7 +31,7 @@ instance Functor m => Functor (NDT m) where
37 fmap f (NDTCons x) = NDTCons $ fmap f' x 31 fmap f (NDTCons x) = NDTCons $ fmap f' x
38 where 32 where
39 f' Nothing = Nothing 33 f' Nothing = Nothing
40 f' (Just (x, xs)) = Just (f x, fmap f xs) 34 f' (Just (x', xs)) = Just (f x', fmap f xs)
41 35
42instance Applicative m => Applicative (NDT m) where 36instance Applicative m => Applicative (NDT m) where
43 pure x = NDTCons . pure $ Just (x, empty) 37 pure x = NDTCons . pure $ Just (x, empty)
@@ -49,7 +43,7 @@ instance Applicative m => Monad (NDT m) where
49 43
50instance Monad m => Monoid (NDT m a) where 44instance Monad m => Monoid (NDT m a) where
51 mempty = empty 45 mempty = empty
52 mappend (NDTCons x) y'@(NDTCons y) = NDTCons $ maybe y (\(x, xs) -> return $ Just (x, xs <> y')) =<< x 46 mappend (NDTCons x) y'@(NDTCons y) = NDTCons $ maybe y (\(x', xs) -> return $ Just (x', xs <> y')) =<< x
53 mappend (NDTBind x f) (NDTBind y g) = NDTBind (fmap Left x <> fmap Right y) (either f g) 47 mappend (NDTBind x f) (NDTBind y g) = NDTBind (fmap Left x <> fmap Right y) (either f g)
54 mappend x@(NDTBind _ _) y = x <> NDTBind y return 48 mappend x@(NDTBind _ _) y = x <> NDTBind y return
55 mappend x y@(NDTBind _ _) = NDTBind x return <> y 49 mappend x y@(NDTBind _ _) = NDTBind x return <> y