on master help sign in
Add the STME effect
1c9dcedAndrzej Rybczak
effectful.cabal+2
@@ -59,6 +59,7 @@ library
59 , monad-control
59 , monad-control
60 , primitive
60 , primitive
61 , resourcet
61 , resourcet
62+ , stm
62 , transformers
63 , transformers
63 , transformers-base
64 , transformers-base
64 , unliftio-core
65 , unliftio-core
@@ -81,6 +82,7 @@ library
81 Effectful.State
82 Effectful.State
82 Effectful.State.Dynamic
83 Effectful.State.Dynamic
83 Effectful.State.MVar
84 Effectful.State.MVar
85+ Effectful.STM
84 Effectful.Writer
86 Effectful.Writer
85
87
86test-suite test
88test-suite test
src/Effectful/STM.hsnew file+20
@@ -0,0 +1,20 @@
1+module Effectful.STM
2+ ( STME
3+ , runSTME
4+ , atomically
5+ ) where
6+
7+import qualified Control.Monad.STM as S
8+
9+import Effectful.Internal.Effect
10+import Effectful.Internal.Monad
11+
12+-- | Run 'S.STM' computations using the @stm@ library.
13+data STME :: Effect where
14+ STME :: STME m r
15+
16+runSTME :: IOE :> es => Eff (STME : es) a -> Eff es a
17+runSTME = evalEffect (IdE STME)
18+
19+atomically :: STME :> es => S.STM a -> Eff es a
20+atomically = unsafeEff_ . S.atomically