From 1ed4cb7980cf61a78fc1cc064586ba3069aa3982 Mon Sep 17 00:00:00 2001 From: Matei Adriel Date: Thu, 4 Aug 2022 17:08:46 +0300 Subject: [PATCH] Implemented `MonadST Aff` --- CHANGELOG.md | 1 + packages.dhall | 3 ++- spago.dhall | 1 + src/Effect/Aff.purs | 5 +++++ 4 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a770fed..2a17681 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ Notable changes to this project are documented in this file. The format is based Breaking changes: New features: +- MonadST instance for Aff Bugfixes: diff --git a/packages.dhall b/packages.dhall index 582d6d3..e2fa4cb 100644 --- a/packages.dhall +++ b/packages.dhall @@ -1,4 +1,5 @@ let upstream = - https://raw.githubusercontent.com/purescript/package-sets/prepare-0.15/src/packages.dhall + https://github.com/purescript/package-sets/releases/download/psc-0.15.4-20220725/packages.dhall + sha256:e56fbdf33a5afd2a610c81f8b940b413a638931edb41532164e641bb2a9ec29c in upstream diff --git a/spago.dhall b/spago.dhall index d6bc891..4070681 100644 --- a/spago.dhall +++ b/spago.dhall @@ -18,6 +18,7 @@ , "partial" , "prelude" , "refs" + , "st" , "tailrec" , "transformers" , "unsafe-coerce" diff --git a/src/Effect/Aff.purs b/src/Effect/Aff.purs index db7d8b1..6663902 100644 --- a/src/Effect/Aff.purs +++ b/src/Effect/Aff.purs @@ -40,6 +40,8 @@ import Control.Lazy (class Lazy) import Control.Monad.Error.Class (class MonadError, class MonadThrow, throwError, catchError, try) import Control.Monad.Error.Class (try, throwError, catchError) as Exports import Control.Monad.Rec.Class (class MonadRec, Step(..)) +import Control.Monad.ST.Class (class MonadST, liftST) +import Control.Monad.ST.Global (Global) import Control.Parallel (parSequence_, parallel) import Control.Parallel.Class (class Parallel) import Control.Parallel.Class (sequential, parallel) as Exports @@ -115,6 +117,9 @@ instance monadEffectAff :: MonadEffect Aff where instance lazyAff :: Lazy (Aff a) where defer f = pure unit >>= f +instance monadSTAff :: MonadST Global Aff where + liftST = liftST >>> liftEffect + -- | Applicative for running parallel effects. Any `Aff` can be coerced to a -- | `ParAff` and back using the `Parallel` class. foreign import data ParAff :: Type -> Type