diff options
author | Gregor Kleen <pngwjpgh@users.noreply.github.com> | 2016-08-05 15:51:20 +0200 |
---|---|---|
committer | Gregor Kleen <pngwjpgh@users.noreply.github.com> | 2016-08-05 15:51:20 +0200 |
commit | 95b623a3ebaa115b6ef889032854b355a010a037 (patch) | |
tree | 6942e4a77881ed30fb8d415a8a8b3042a75dd8e3 /events/src/Events/Types/NDT.hs | |
parent | aed23962edbeded10349e00fed3cea4e0639ae97 (diff) | |
download | events-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.hs | 10 |
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 | ||
13 | import Data.Monoid | 13 | import Data.Monoid |
14 | import Data.Foldable (foldr) | 14 | import Data.Foldable (foldr) |
15 | import Data.Maybe | ||
16 | import Data.Either | ||
17 | import Data.Bool (bool) | 15 | import Data.Bool (bool) |
18 | 16 | ||
19 | import Control.Applicative (Alternative) | 17 | import Control.Applicative (Alternative) |
20 | import qualified Control.Applicative as Alt (Alternative(..)) | 18 | import qualified Control.Applicative as Alt (Alternative(..)) |
21 | import Control.Monad | 19 | import Control.Monad |
22 | import Control.Monad.Identity | ||
23 | 20 | ||
24 | import Control.Monad.Trans | 21 | import Control.Monad.Trans |
25 | import Control.Monad.Reader (MonadReader(..)) | 22 | import Control.Monad.Reader (MonadReader(..)) |
26 | import Control.Monad.Trans.Maybe | ||
27 | import Control.Monad.Catch (MonadThrow(..)) | 23 | import Control.Monad.Catch (MonadThrow(..)) |
28 | 24 | ||
29 | import Debug.Trace | ||
30 | |||
31 | data NDT m a where | 25 | data 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 | ||
42 | instance Applicative m => Applicative (NDT m) where | 36 | instance 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 | ||
50 | instance Monad m => Monoid (NDT m a) where | 44 | instance 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 |