simple-effects 0.7.0.0 → 0.7.0.1
raw patch · 13 files changed
+46/−43 lines, 13 filesdep +MonadRandomdep +exceptionsdep +textdep −interlude-ldep −lens
Dependencies added: MonadRandom, exceptions, text
Dependencies removed: interlude-l, lens
Files
- bench/Bench.hs +0/−1
- simple-effects.cabal +5/−8
- src/Control/Effects.hs +1/−6
- src/Control/Effects/Early.hs +2/−3
- src/Control/Effects/List.hs +2/−1
- src/Control/Effects/Parallel.hs +3/−1
- src/Control/Effects/Reader.hs +1/−1
- src/Control/Effects/Signal.hs +2/−3
- src/Control/Effects/State.hs +2/−3
- src/Control/Effects1.hs +1/−5
- src/Control/Monad/Runnable.hs +1/−7
- src/Import.hs +21/−0
- test/Main.hs +5/−4
bench/Bench.hs view
@@ -1,5 +1,4 @@ {-# LANGUAGE FlexibleContexts, TypeApplications #-} -import Interlude hiding (modify', execStateT) import GHC.IO.Encoding (setLocaleEncoding, utf8) import Control.Effects.State
simple-effects.cabal view
@@ -1,5 +1,5 @@ name: simple-effects -version: 0.7.0.0 +version: 0.7.0.1 synopsis: A simple effect system that integrates with MTL description: Please see README.md homepage: https://gitlab.com/LukaHorvat/simple-effects @@ -22,18 +22,19 @@ , Control.Effects.Early , Control.Effects.Parallel , Control.Monad.Runnable + other-modules: Import hs-source-dirs: src default-language: Haskell2010 build-depends: base >= 4.7 && < 5 , transformers , mtl - , interlude-l >= 0.1.0.6 , monad-control == 1.0.* , transformers-base == 0.4.* , list-t - , lens , array - default-extensions: NoImplicitPrelude + , MonadRandom + , exceptions + , text ghc-options: -Wall test-suite tests @@ -43,9 +44,7 @@ type: exitcode-stdio-1.0 build-depends: base >= 4.7 && < 5 , simple-effects - , interlude-l >= 0.1.0.6 ghc-options: -Wall -threaded -with-rtsopts=-N - default-extensions:NoImplicitPrelude benchmark bench-effects type: exitcode-stdio-1.0 @@ -55,7 +54,5 @@ , criterion , mtl , transformers - , interlude-l - , lens , simple-effects default-language: Haskell2010
src/Control/Effects.hs view
@@ -3,12 +3,7 @@ , IncoherentInstances #-} module Control.Effects (module Control.Effects, module Control.Effects1) where -import Interlude hiding (msg) - -import Control.Monad.Reader -import Control.Monad.Trans.Control -import Control.Monad.Base - +import Import import Control.Monad.Runnable import Control.Effects1
src/Control/Effects/Early.hs view
@@ -5,8 +5,7 @@ , earlyReturn, handleEarly, onlyDo, ifNothingEarlyReturn, ifNothingDo , ifLeftEarlyReturn, ifLeftDo ) where -import Interlude -import Control.Monad.Trans.Except +import Import import Control.Effects @@ -24,7 +23,7 @@ -- | Get the result from a computation. Either the early returned one, or the regular result. handleEarly :: Monad m => ExceptT (Early a) m a -> m a -handleEarly = fmap (either getEarlyReturn identity) +handleEarly = fmap (either getEarlyReturn id) . runExceptT -- | Only do the given action and exit early with it's result.
src/Control/Effects/List.hs view
@@ -3,7 +3,8 @@ ( module Control.Effects.List , module ListT ) where -import Interlude hiding (toList, traverse_, fold, foldMaybe, splitAt, head) +import Prelude hiding (splitAt, head) +import Import import ListT hiding (take)
src/Control/Effects/Parallel.hs view
@@ -1,10 +1,12 @@ {-# LANGUAGE ScopedTypeVariables, FlexibleContexts #-} module Control.Effects.Parallel where -import Interlude hiding (toList) +import Import +import GHC.MVar import GHC.IO.Unsafe import Data.Array.IO +import Control.Concurrent import Control.Monad.Runnable import Control.Effects.State
src/Control/Effects/Reader.hs view
@@ -1,7 +1,7 @@ {-# LANGUAGE ScopedTypeVariables, TypeFamilies, FlexibleContexts #-} module Control.Effects.Reader (module Control.Effects.Reader, module Control.Effects) where -import Interlude +import Import import Control.Effects
src/Control/Effects/Signal.hs view
@@ -8,9 +8,8 @@ , module Control.Monad.Trans.Except, MaybeT(..), discardAllExceptions, showAllExceptions , Handles(..), handleToEitherRecursive ) where -import Interlude hiding (TypeError) +import Import import Control.Monad.Trans.Except -import Control.Monad.Trans.Maybe import qualified GHC.TypeLits as TL import GHC.TypeLits (TypeError, ErrorMessage(..)) import Control.Effects @@ -34,7 +33,7 @@ instance {-# OVERLAPPABLE #-} Monad m => MonadEffect (Signal e b) (ExceptT e m) where effect _ = throwE instance (Show e, Monad m) => MonadEffect (Signal e b) (ExceptT SomeSignal m) where - effect _ = throwE . SomeSignal . pshow + effect _ = throwE . SomeSignal . pack . show instance Monad m => MonadEffect (Signal a b) (MaybeT m) where effect _ _ = mzero instance TypeError (UnhandledError a b)
src/Control/Effects/State.hs view
@@ -1,9 +1,8 @@ {-# LANGUAGE TypeFamilies, ScopedTypeVariables, FlexibleContexts, Rank2Types, ConstraintKinds #-} -{-# LANGUAGE MultiParamTypeClasses, GADTs, BangPatterns #-} +{-# LANGUAGE MultiParamTypeClasses, GADTs #-} module Control.Effects.State (module Control.Effects.State, module Control.Effects1) where -import Interlude hiding (Set, State) - +import Import hiding (State) import Data.IORef import Control.Effects1
src/Control/Effects1.hs view
@@ -3,11 +3,7 @@ , IncoherentInstances, RankNTypes, ConstraintKinds #-} module Control.Effects1 where -import Interlude hiding (msg) - -import Control.Monad.Reader -import Control.Monad.Trans.Control -import Control.Monad.Base +import Import import Control.Monad.Runnable
src/Control/Monad/Runnable.hs view
@@ -3,19 +3,13 @@ {-# OPTIONS_GHC -Wno-warnings-deprecations #-} module Control.Monad.Runnable where -import Interlude hiding (toList, throwError) - -import ListT +import Import import qualified Control.Monad.Trans.State.Strict as SS import qualified Control.Monad.Trans.State.Lazy as LS import qualified Control.Monad.Trans.Writer.Strict as SW import qualified Control.Monad.Trans.Writer.Lazy as LW import qualified Control.Monad.Trans.RWS.Strict as SR import qualified Control.Monad.Trans.RWS.Lazy as LR -import Control.Monad.Trans.Identity -import Control.Monad.Trans.Error -import Control.Monad.Trans.Except -import Control.Monad.Trans.Maybe -- import Control.Monad.Trans.Cont -- may be impossible to write -- | A class of monads that have a run function.
+ src/Import.hs view
@@ -0,0 +1,21 @@+module Import (module X) where + +import Control.Applicative as X +import Control.Monad.State as X +import Control.Monad.Catch as X +import Control.Monad.Random as X +import Control.Monad.Trans.Identity as X hiding (liftCallCC, liftCatch) +import Control.Monad.Trans.Error as X hiding (liftListen, liftCallCC, liftPass) +import Control.Monad.Trans.Except as X hiding (liftListen, liftCallCC, liftPass) +import Control.Monad.Trans.Maybe as X hiding (liftListen, liftCallCC, liftCatch, liftPass) +import Control.Monad.Reader as X +import Data.Functor.Identity as X +import ListT as X +import Control.Monad.Trans.Control as X +import Control.Monad.Base as X +import GHC.Exts as X hiding (toList, fromList) +import Data.Proxy as X +import Data.Function as X +import Data.Semigroup as X hiding (Any) +import Data.Void as X +import Data.Text as X (Text, pack, unpack)
test/Main.hs view
@@ -1,12 +1,13 @@ {-# LANGUAGE NoMonomorphismRestriction, FlexibleContexts, ScopedTypeVariables, BangPatterns #-} module Main where -import Interlude - +import Control.Monad.IO.Class +import Control.Monad import Control.Effects.Signal import Control.Effects.State import Control.Effects.Parallel import Control.Effects.Early +import Data.Function -- Should infer ex1 = signal True @@ -44,7 +45,7 @@ void $ throwSignal True setState (3 :: Int) st :: Int <- getState - print st + liftIO (print st) inc :: Int -> Int inc !x = x + 1 @@ -67,5 +68,5 @@ putStrLn "Starting parallel test" handleStateT (0 :: Int) $ do res <- parallelWithSequence (replicate 8 task) - mapM_ print res + mapM_ (liftIO . print) res putStrLn "Parallel test done"