packages feed

polysemy 0.3.0.0 → 0.3.0.1

raw patch · 6 files changed

+44/−40 lines, 6 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Polysemy.Internal.Union: weakenUnder :: Union (e1 : r) m a -> Union (e1 : (e2 : r)) m a
- Polysemy.Internal.Union: weakenUnder2 :: Union (e1 : r) m a -> Union (e1 : (e2 : (e3 : r))) m a
- Polysemy.Internal.Union: weakenUnder3 :: Union (e1 : r) m a -> Union (e1 : (e2 : (e3 : (e4 : r)))) m a
- Polysemy.Error: catch :: forall e_anvn r_anHF a_anvp. Member (Error e_anvn) r_anHF => Sem r_anHF a_anvp -> (e_anvn -> Sem r_anHF a_anvp) -> Sem r_anHF a_anvp
+ Polysemy.Error: catch :: forall e_ao1z r_aodR a_ao1B. Member (Error e_ao1z) r_aodR => Sem r_aodR a_ao1B -> (e_ao1z -> Sem r_aodR a_ao1B) -> Sem r_aodR a_ao1B
- Polysemy.Error: throw :: forall e_anvn r_anHE a_anvp. Member (Error e_anvn) r_anHE => e_anvn -> Sem r_anHE a_anvp
+ Polysemy.Error: throw :: forall e_ao1z r_aodQ a_ao1B. Member (Error e_ao1z) r_aodQ => e_ao1z -> Sem r_aodQ a_ao1B
- Polysemy.Input: input :: forall a_asvT r_aswN. Member (Input a_asvT) r_aswN => Sem r_aswN a_asvT
+ Polysemy.Input: input :: forall a_at25 r_at2Z. Member (Input a_at25) r_at2Z => Sem r_at2Z a_at25
- Polysemy.Output: output :: forall o_arSr r_arTk. Member (Output o_arSr) r_arTk => o_arSr -> Sem r_arTk ()
+ Polysemy.Output: output :: forall o_asoD r_aspw. Member (Output o_asoD) r_aspw => o_asoD -> Sem r_aspw ()
- Polysemy.Reader: ask :: forall a_asQG r_asSe. Member (Reader a_asQG) r_asSe => Sem r_asSe a_asQG
+ Polysemy.Reader: ask :: forall a_atmS r_atoq. Member (Reader a_atmS) r_atoq => Sem r_atoq a_atmS
- Polysemy.Reader: local :: forall i_asQE r_asSf a_asQG. Member (Reader i_asQE) r_asSf => (i_asQE -> i_asQE) -> Sem r_asSf a_asQG -> Sem r_asSf a_asQG
+ Polysemy.Reader: local :: forall i_atmQ r_ator a_atmS. Member (Reader i_atmQ) r_ator => (i_atmQ -> i_atmQ) -> Sem r_ator a_atmS -> Sem r_ator a_atmS
- Polysemy.Resource: bracket :: forall r_aqte a_aqt9 a_aqs6. Member Resource r_aqte => Sem r_aqte a_aqt9 -> (a_aqt9 -> Sem r_aqte ()) -> (a_aqt9 -> Sem r_aqte a_aqs6) -> Sem r_aqte a_aqs6
+ Polysemy.Resource: bracket :: forall r_aqZq a_aqZl a_aqYi. Member Resource r_aqZq => Sem r_aqZq a_aqZl -> (a_aqZl -> Sem r_aqZq ()) -> (a_aqZl -> Sem r_aqZq a_aqYi) -> Sem r_aqZq a_aqYi
- Polysemy.State: get :: forall a_aqNr r_aqOV. Member (State a_aqNr) r_aqOV => Sem r_aqOV a_aqNr
+ Polysemy.State: get :: forall a_arjD r_arl7. Member (State a_arjD) r_arl7 => Sem r_arl7 a_arjD
- Polysemy.State: put :: forall s_aqNp r_aqOW. Member (State s_aqNp) r_aqOW => s_aqNp -> Sem r_aqOW ()
+ Polysemy.State: put :: forall s_arjB r_arl8. Member (State s_arjB) r_arl8 => s_arjB -> Sem r_arl8 ()
- Polysemy.Trace: trace :: forall r_atd1. Member Trace r_atd1 => String -> Sem r_atd1 ()
+ Polysemy.Trace: trace :: forall r_atJd. Member Trace r_atJd => String -> Sem r_atJd ()
- Polysemy.Writer: censor :: forall o_atCE r_atF6 a_atCG. Member (Writer o_atCE) r_atF6 => (o_atCE -> o_atCE) -> Sem r_atF6 a_atCG -> Sem r_atF6 a_atCG
+ Polysemy.Writer: censor :: forall o_au8Q r_aubi a_au8S. Member (Writer o_au8Q) r_aubi => (o_au8Q -> o_au8Q) -> Sem r_aubi a_au8S -> Sem r_aubi a_au8S
- Polysemy.Writer: listen :: forall o_atCE r_atF5 a_atEK. Member (Writer o_atCE) r_atF5 => Sem r_atF5 a_atEK -> Sem r_atF5 (o_atCE, a_atEK)
+ Polysemy.Writer: listen :: forall o_au8Q r_aubh a_auaW. Member (Writer o_au8Q) r_aubh => Sem r_aubh a_auaW -> Sem r_aubh (o_au8Q, a_auaW)
- Polysemy.Writer: tell :: forall o_atCE r_atF4. Member (Writer o_atCE) r_atF4 => o_atCE -> Sem r_atF4 ()
+ Polysemy.Writer: tell :: forall o_au8Q r_aubg. Member (Writer o_au8Q) r_aubg => o_au8Q -> Sem r_aubg ()

Files

ChangeLog.md view
@@ -1,5 +1,9 @@ # Changelog for polysemy +## 0.3.0.1 (2019-06-09)++- Fixed a type error in the benchmark caused by deprecation of `Semantic`+ ## 0.3.0.0 (2019-06-01)  - Removed all deprecated names
bench/Poly.hs view
@@ -17,7 +17,7 @@ import Polysemy.Output  -slowBeforeSpecialization :: Member (State Int) r => Semantic r Int+slowBeforeSpecialization :: Member (State Int) r => Sem r Int slowBeforeSpecialization = do   n <- get   if n <= 0@@ -26,7 +26,7 @@        put $ n - 1        slowBeforeSpecialization -{-# SPECIALIZE slowBeforeSpecialization :: Semantic '[State Int] Int #-}+{-# SPECIALIZE slowBeforeSpecialization :: Sem '[State Int] Int #-}   countDown :: Int -> Int@@ -34,11 +34,11 @@   fst . run . runState s $ slowBeforeSpecialization  prog-    :: Semantic '[ State Bool-                 , Error Bool-                 , Resource-                 , Lift IO-                 ] Bool+    :: Sem '[ State Bool+            , Error Bool+            , Resource+            , Lift IO+            ] Bool prog = catch @Bool (throw True) (pure . not)  zoinks :: IO (Either Bool Bool)@@ -51,9 +51,9 @@   ReadLine :: Console m String   WriteLine :: String -> Console m () -makeSemantic ''Console+makeSem ''Console -runConsoleBoring :: [String] -> Semantic (Console ': r) a -> Semantic r ([String], a)+runConsoleBoring :: [String] -> Sem (Console ': r) a -> Sem r ([String], a) runConsoleBoring inputs   = runFoldMapOutput (:[])   . runListInput inputs
polysemy.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: 9ee186fecebe41f0688aa073f56c51a08f7f3881a86af44a4d91a6cb8b4d6005+-- hash: 377e703e0e8b13978cd5936eac0b54f8d9ddba81bf1bdedc130d48bb4f7133dd  name:           polysemy-version:        0.3.0.0+version:        0.3.0.1 synopsis:       Higher-order, low-boilerplate, zero-cost free monads. description:    Please see the README on GitHub at <https://github.com/isovector/polysemy#readme> category:       Language
src/Polysemy/Internal.hs view
@@ -253,7 +253,6 @@ hoistSem nat (Sem m) = Sem $ \k -> m $ \u -> k $ nat u {-# INLINE hoistSem #-} - ------------------------------------------------------------------------------ -- | Introduce an effect into 'Sem'. Analogous to -- 'Control.Monad.Class.Trans.lift' in the mtl ecosystem@@ -272,6 +271,11 @@ -- list. raiseUnder :: ∀ e2 e1 r a. Sem (e1 ': r) a -> Sem (e1 ': e2 ': r) a raiseUnder = hoistSem $ hoist raiseUnder_b . weakenUnder+  where+    weakenUnder :: ∀ m x. Union (e1 ': r) m x -> Union (e1 ': e2 ': r) m x+    weakenUnder (Union SZ a) = Union SZ a+    weakenUnder (Union (SS n) a) = Union (SS (SS n)) a+    {-# INLINE weakenUnder #-} {-# INLINE raiseUnder #-}  @@ -285,6 +289,11 @@ -- list. raiseUnder2 :: ∀ e2 e3 e1 r a. Sem (e1 ': r) a -> Sem (e1 ': e2 ': e3 ': r) a raiseUnder2 = hoistSem $ hoist raiseUnder2_b . weakenUnder2+  where+    weakenUnder2 ::  ∀ m x. Union (e1 ': r) m x -> Union (e1 ': e2 ': e3 ': r) m x+    weakenUnder2 (Union SZ a) = Union SZ a+    weakenUnder2 (Union (SS n) a) = Union (SS (SS (SS n))) a+    {-# INLINE weakenUnder2 #-} {-# INLINE raiseUnder2 #-}  @@ -298,6 +307,11 @@ -- list. raiseUnder3 :: ∀ e2 e3 e4 e1 r a. Sem (e1 ': r) a -> Sem (e1 ': e2 ': e3 ': e4 ': r) a raiseUnder3 = hoistSem $ hoist raiseUnder3_b . weakenUnder3+  where+    weakenUnder3 ::  ∀ m x. Union (e1 ': r) m x -> Union (e1 ': e2 ': e3 ': e4 ': r) m x+    weakenUnder3 (Union SZ a) = Union SZ a+    weakenUnder3 (Union (SS n) a) = Union (SS (SS (SS (SS n)))) a+    {-# INLINE weakenUnder3 #-} {-# INLINE raiseUnder3 #-}  
src/Polysemy/Internal/Combinators.hs view
@@ -9,12 +9,14 @@   , reinterpret   , reinterpret2   , reinterpret3+     -- * Higher order   , interpretH   , interceptH   , reinterpretH   , reinterpret2H   , reinterpret3H+     -- * Statefulness   , stateful   , lazilyStateful@@ -35,7 +37,14 @@ swap ~(a, b) = (b, a)  +firstOrder+    :: ((forall m x. e m x -> Tactical e m r x) -> t)+    -> (forall m x. e m x -> Sem r x)+    -> t+firstOrder higher f = higher $ \(e :: e m x) -> liftT @m $ f e+{-# INLINE firstOrder #-} + ------------------------------------------------------------------------------ -- | The simplest way to produce an effect handler. Interprets an effect @e@ by -- transforming it into other effects inside of @r@.@@ -47,7 +56,8 @@     -> Sem (e ': r) a     -> Sem r a -- TODO(sandy): could probably give a `coerce` impl for `runTactics` here-interpret f = interpretH $ \(e :: e m x) -> liftT @m $ f e+interpret = firstOrder interpretH+{-# INLINE interpret #-}   ------------------------------------------------------------------------------@@ -163,7 +173,7 @@        -- ^ A natural transformation from the handled effect to the new effect.     -> Sem (e1 ': r) a     -> Sem (e2 ': r) a-reinterpret f = reinterpretH $ \(e :: e m x) -> liftT @m $ f e+reinterpret = firstOrder reinterpretH {-# INLINE[3] reinterpret #-} -- TODO(sandy): Make this fuse in with 'stateful' directly. @@ -194,7 +204,7 @@        -- ^ A natural transformation from the handled effect to the new effects.     -> Sem (e1 ': r) a     -> Sem (e2 ': e3 ': r) a-reinterpret2 f = reinterpret2H $ \(e :: e m x) -> liftT @m $ f e+reinterpret2 = firstOrder reinterpret2H {-# INLINE[3] reinterpret2 #-}  @@ -224,7 +234,7 @@        -- ^ A natural transformation from the handled effect to the new effects.     -> Sem (e1 ': r) a     -> Sem (e2 ': e3 ': e4 ': r) a-reinterpret3 f = reinterpret3H $ \(e :: e m x) -> liftT @m $ f e+reinterpret3 = firstOrder reinterpret3H {-# INLINE[3] reinterpret3 #-}  
src/Polysemy/Internal/Union.hs view
@@ -17,9 +17,6 @@   -- * Building Unions   , inj   , weaken-  , weakenUnder-  , weakenUnder2-  , weakenUnder3   -- * Using Unions   , decomp   , prj@@ -191,27 +188,6 @@ weaken :: Union r m a -> Union (e ': r) m a weaken (Union n a) = Union (SS n) a {-# INLINE weaken #-}----------------------------------------------------------------------------------- | Like 'weaken', but introduces a new effect under the top of the stack.-weakenUnder :: Union (e1 ': r) m a -> Union (e1 ': e2 ': r) m a-weakenUnder (Union SZ a) = Union SZ a-weakenUnder (Union (SS n) a) = Union (SS (SS n)) a-{-# INLINE weakenUnder #-}----------------------------------------------------------------------------------- | Like 'weaken', but introduces a new effect under the top of the stack.-weakenUnder2 :: Union (e1 ': r) m a -> Union (e1 ': e2 ': e3 ': r) m a-weakenUnder2 (Union SZ a) = Union SZ a-weakenUnder2 (Union (SS n) a) = Union (SS (SS (SS n))) a-{-# INLINE weakenUnder2 #-}----------------------------------------------------------------------------------- | Like 'weaken', but introduces a new effect under the top of the stack.-weakenUnder3 :: Union (e1 ': r) m a -> Union (e1 ': e2 ': e3 ': e4 ': r) m a-weakenUnder3 (Union SZ a) = Union SZ a-weakenUnder3 (Union (SS n) a) = Union (SS (SS (SS (SS n)))) a-{-# INLINE weakenUnder3 #-}   ------------------------------------------------------------------------------