monad-task 0.1.0 → 0.2.0
raw patch · 4 files changed
+44/−11 lines, 4 filesdep ~transformersPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: transformers
API changes (from Hackage documentation)
- Control.Monad.Task: runTaskT :: TaskT e m a -> ContT (Trace m e) m a
- Control.Monad.Task.Class: instance (Error e, Monad m, MonadTask a m) => MonadTask a (ErrorT e m)
- Control.Monad.Task.Class: instance (Monad m, MonadTask a m) => MonadTask a (IdentityT m)
- Control.Monad.Task.Class: instance (Monad m, MonadTask a m) => MonadTask a (ListT m)
- Control.Monad.Task.Class: instance (Monad m, MonadTask a m) => MonadTask a (MaybeT m)
- Control.Monad.Task.Class: instance (Monad m, MonadTask a m) => MonadTask a (ReaderT r m)
- Control.Monad.Task.Class: instance (Monoid w, Monad m, MonadTask a m) => MonadTask a (WriterT w m)
- Control.Monad.Trans.Task: EXIT :: Trace m e
- Control.Monad.Trans.Task: FORK :: m (Trace m e) -> m (Trace m e) -> Trace m e
- Control.Monad.Trans.Task: RET :: Trace m e
- Control.Monad.Trans.Task: SIGNAL :: e -> m (Trace m e) -> Trace m e
- Control.Monad.Trans.Task: WATCH :: (e -> Maybe v) -> (v -> m (Trace m e)) -> Trace m e
- Control.Monad.Trans.Task: YIELD :: m (Trace m e) -> Trace m e
- Control.Monad.Trans.Task: instance Applicative (TaskT e m)
- Control.Monad.Trans.Task: instance Functor (TaskT e m)
- Control.Monad.Trans.Task: instance Monad m => Monad (TaskT e m)
- Control.Monad.Trans.Task: instance Monad m => MonadTask e (TaskT e m)
- Control.Monad.Trans.Task: instance MonadIO m => MonadIO (TaskT e m)
- Control.Monad.Trans.Task: instance MonadReader s m => MonadReader s (TaskT e m)
- Control.Monad.Trans.Task: instance MonadState s m => MonadState s (TaskT e m)
- Control.Monad.Trans.Task: instance MonadTrans (TaskT e)
- Control.Monad.Trans.Task: runTaskT :: TaskT e m a -> ContT (Trace m e) m a
+ Control.Monad.Task: [runTaskT] :: TaskT e m a -> ContT (Trace m e) m a
+ Control.Monad.Task.Class: instance (GHC.Base.Monad m, Control.Monad.Task.Class.MonadTask a m) => Control.Monad.Task.Class.MonadTask a (Control.Monad.Trans.Except.ExceptT e m)
+ Control.Monad.Task.Class: instance (GHC.Base.Monad m, Control.Monad.Task.Class.MonadTask a m) => Control.Monad.Task.Class.MonadTask a (Control.Monad.Trans.Identity.IdentityT m)
+ Control.Monad.Task.Class: instance (GHC.Base.Monad m, Control.Monad.Task.Class.MonadTask a m) => Control.Monad.Task.Class.MonadTask a (Control.Monad.Trans.List.ListT m)
+ Control.Monad.Task.Class: instance (GHC.Base.Monad m, Control.Monad.Task.Class.MonadTask a m) => Control.Monad.Task.Class.MonadTask a (Control.Monad.Trans.Maybe.MaybeT m)
+ Control.Monad.Task.Class: instance (GHC.Base.Monad m, Control.Monad.Task.Class.MonadTask a m) => Control.Monad.Task.Class.MonadTask a (Control.Monad.Trans.Reader.ReaderT r m)
+ Control.Monad.Task.Class: instance (GHC.Base.Monoid w, GHC.Base.Monad m, Control.Monad.Task.Class.MonadTask a m) => Control.Monad.Task.Class.MonadTask a (Control.Monad.Trans.Writer.Lazy.WriterT w m)
+ Control.Monad.Task.Class: instance (GHC.Base.Monoid w, GHC.Base.Monad m, Control.Monad.Task.Class.MonadTask a m) => Control.Monad.Task.Class.MonadTask a (Control.Monad.Trans.Writer.Strict.WriterT w m)
+ Control.Monad.Trans.Task: [EXIT] :: Trace m e
+ Control.Monad.Trans.Task: [FORK] :: m (Trace m e) -> m (Trace m e) -> Trace m e
+ Control.Monad.Trans.Task: [RET] :: Trace m e
+ Control.Monad.Trans.Task: [SIGNAL] :: e -> m (Trace m e) -> Trace m e
+ Control.Monad.Trans.Task: [WATCH] :: (e -> Maybe v) -> (v -> m (Trace m e)) -> Trace m e
+ Control.Monad.Trans.Task: [YIELD] :: m (Trace m e) -> Trace m e
+ Control.Monad.Trans.Task: [runTaskT] :: TaskT e m a -> ContT (Trace m e) m a
+ Control.Monad.Trans.Task: instance Control.Monad.IO.Class.MonadIO m => Control.Monad.IO.Class.MonadIO (Control.Monad.Trans.Task.TaskT e m)
+ Control.Monad.Trans.Task: instance Control.Monad.Reader.Class.MonadReader s m => Control.Monad.Reader.Class.MonadReader s (Control.Monad.Trans.Task.TaskT e m)
+ Control.Monad.Trans.Task: instance Control.Monad.State.Class.MonadState s m => Control.Monad.State.Class.MonadState s (Control.Monad.Trans.Task.TaskT e m)
+ Control.Monad.Trans.Task: instance Control.Monad.Trans.Class.MonadTrans (Control.Monad.Trans.Task.TaskT e)
+ Control.Monad.Trans.Task: instance GHC.Base.Applicative (Control.Monad.Trans.Task.TaskT e m)
+ Control.Monad.Trans.Task: instance GHC.Base.Functor (Control.Monad.Trans.Task.TaskT e m)
+ Control.Monad.Trans.Task: instance GHC.Base.Monad m => Control.Monad.Task.Class.MonadTask e (Control.Monad.Trans.Task.TaskT e m)
+ Control.Monad.Trans.Task: instance GHC.Base.Monad m => GHC.Base.Monad (Control.Monad.Trans.Task.TaskT e m)
Files
- Changelog.txt +32/−0
- Control/Monad/Task.hs +2/−2
- Control/Monad/Task/Class.hs +6/−6
- monad-task.cabal +4/−3
+ Changelog.txt view
@@ -0,0 +1,32 @@+commit 33ee7b37cfe93988ce2ff1955e4d6fdfda96d584+Author: Paul H. Liu <paul@thev.net>+Date: Wed Jan 3 18:39:24 2018 -0800++ Change version bounds for dependencies, support ExceptT instead of ErrorT, and bump version to 0.2.0++commit 1087900d1b1e06ac51de46ac55a0a96b5f1405e0+Merge: f77a470 69d8d7f+Author: Paul Liu <ninegua@gmail.com>+Date: Mon Nov 9 14:40:32 2015 -0800++ Merge pull request #1 from iblech/patch-1+ + typo fix++commit 69d8d7f40b67359b12aee90872ae9ac6b2f38c35+Author: Ingo Blechschmidt <iblech@web.de>+Date: Mon Nov 9 13:25:12 2015 +0100++ typo++commit f77a4702809b9383823bf30da9dd37921083d3cf+Author: Paul H. Liu <paul@thev.net>+Date: Thu Aug 30 23:15:18 2012 -0700++ Release 0.1.0++commit c71a439757a98c0cd3541eca3968edbf08c539ba+Author: Paul LIu <ninegua@gmail.com>+Date: Sat Aug 25 16:50:16 2012 -0700++ Initial commit
Control/Monad/Task.hs view
@@ -4,8 +4,8 @@ programs into monads via co-routines. The idea is loosely based on /Combining Events And Threads For Scalable Network Services/, by Peng Li and Steve Zdancewic, in /PLDI/, 2007.-(<http://www.cis.upenn.edu/~stevez/papers/abstracts.html#LZ07>), but -with deterministic and co-oprative lightweight threads, +(<http://www.cis.upenn.edu/~stevez/papers/abstracts.html#LZ07>), but+with deterministic and co-operative lightweight threads, also known as co-routines, so that the base monad can be anything ranging from IO to state monads, or your favorite monad transformer stack.
Control/Monad/Task/Class.hs view
@@ -28,22 +28,22 @@ import Control.Monad.Trans.Reader import qualified Control.Monad.Trans.Writer.Lazy as LazyWriter import qualified Control.Monad.Trans.Writer.Strict as StrictWriter-import Control.Monad.Trans.Error+import Control.Monad.Trans.Except -- | @MonadTask@ specifies a task monad @m@ over an event type @e@. class Monad m => MonadTask e m | m -> e where -- | @yield@ temporarily suspends current task to let others run. yield :: m ()- -- | @fork@ spawns a task and runs it immediate until it ends or + -- | @fork@ spawns a task and runs it immediately until it ends or -- suspends before returning to current task. fork :: m a -> m ()- -- | @watch@ suspends current task to wait for future events, and will+ -- | @watch@ suspends the current task to wait for future events, and will -- resume execution when an event triggers its watching function. watch :: (e -> Maybe a) -> m a -- | @signal@ broadcasts an event to all other tasks that are watching, -- and give those who wake up the priority to run. signal :: e -> m ()- -- | @exit@ ends all tasks and return immediately.+ -- | @exit@ ends all tasks and returns immediately. exit :: m () -- | @orElse@ is a helper function for combining two trigger functions @@ -51,10 +51,10 @@ orElse :: (e -> Maybe a) -> (e -> Maybe b) -> e -> Maybe (Either a b) orElse f g x = maybe (fmap Right (g x)) (Just . Left) (f x) -instance (Error e, Monad m, MonadTask a m) => MonadTask a (ErrorT e m) where+instance (Monad m, MonadTask a m) => MonadTask a (ExceptT e m) where exit = lift exit yield = lift yield- fork = lift . fork . runErrorT + fork = lift . fork . runExceptT watch = lift . watch signal = lift . signal
monad-task.cabal view
@@ -1,5 +1,5 @@ name: monad-task-version: 0.1.0+version: 0.2.0 homepage: http://github.com/ninegua/monad-task author: Paul Liu maintainer: Paul Liu <paul@thev.net>@@ -14,7 +14,7 @@ based on /Combining Events And Threads For Scalable Network Services/, by Peng Li and Steve Zdancewic, in /PLDI/, 2007. (<http://www.cis.upenn.edu/~stevez/papers/abstracts.html#LZ07>), but - with deterministic and co-oprative lightweight threads, also known as + with deterministic and co-operative lightweight threads, also known as co-routines, so that the base monad can be anything ranging from IO to state monads, or your favorite monad transformer stack. license: BSD3@@ -22,6 +22,7 @@ extra-source-files: README.md+ Changelog.txt source-repository head type: git@@ -32,6 +33,6 @@ Control.Monad.Task Control.Monad.Task.Class Control.Monad.Trans.Task- build-depends: base < 6, mtl == 2.*, transformers < 0.4+ build-depends: base < 6, mtl == 2.*, transformers > 0.4 && < 0.6 extensions: ghc-options: -Wall -fno-warn-unused-imports