freer 0.2.2.2 → 0.2.2.3
raw patch · 7 files changed
+29/−6 lines, 7 files
Files
- bench/Core.hs +2/−2
- examples/src/Main.hs +15/−1
- freer.cabal +1/−1
- src/Control/Monad/Freer.hs +1/−0
- src/Control/Monad/Freer/Internal.hs +1/−0
- src/Data/Open/Union.hs +8/−1
- tests/Tests/Exception.hs +1/−1
bench/Core.hs view
@@ -144,7 +144,7 @@ bench "freer" $ whnf (run . runHttp) prog , bench "free" $ whnf runFHttp prog' - , bench "freerN" $ whnf (run . runHttp . p) 1000000- , bench "freeN" $ whnf (runFHttp . p') 1000000+ , bench "freerN" $ whnf (run . runHttp . p) 100000+ , bench "freeN" $ whnf (runFHttp . p') 100000 ] ]
examples/src/Main.hs view
@@ -1,4 +1,18 @@+{-# LANGUAGE DataKinds #-} module Main where +import Control.Monad.Freer+import Teletype++runner :: Eff '[Teletype] ()+runner = do+ x <- getLine'+ putStrLn' x+ y <- getLine'+ putStrLn' y+ main :: IO ()-main = print "placeholder"+main = do+ let xs = runTeletypePure ["cat", "fish"] runner+ print xs+ runTeletype runner
freer.cabal view
@@ -1,5 +1,5 @@ name: freer-version: 0.2.2.2+version: 0.2.2.3 synopsis: Implementation of the Freer Monad license: BSD3 license-file: LICENSE
src/Control/Monad/Freer.hs view
@@ -10,6 +10,7 @@ -} module Control.Monad.Freer ( Member,+ Members, Eff, run, send,
src/Control/Monad/Freer/Internal.hs view
@@ -33,6 +33,7 @@ module Control.Monad.Freer.Internal ( Eff(..), Member(..),+ Members, Arr, Arrs, Union,
src/Data/Open/Union.hs view
@@ -34,9 +34,12 @@ Union, decomp, weaken,- Member(..)+ Member(..),+ Members ) where +import GHC.Exts+ -------------------------------------------------------------------------------- -- Interface -- --------------------------------------------------------------------------------@@ -60,6 +63,10 @@ instance (Member' t r (FindElem t r)) => Member t r where inj = inj' (P :: P (FindElem t r)) prj = prj' (P :: P (FindElem t r))++type family Members m r :: Constraint where+ Members (t ': c) r = (Member t r, Members c r)+ Members '[] r = () -------------------------------------------------------------------------------- -- Implementation --
tests/Tests/Exception.hs view
@@ -38,7 +38,7 @@ incr :: Member (State Int) r => Eff r () incr = get >>= put . (+ (1::Int)) -tes1 :: (Member (State Int) r, Member (Exc String) r) => Eff r b+tes1 :: (Members '[State Int, Exc String] r) => Eff r b tes1 = do incr throwError "exc"