From 8198d141d5fd31b82bbf71904b004f11ec8e8996 Mon Sep 17 00:00:00 2001 From: Irakli Safareli Date: Thu, 7 Mar 2019 22:25:56 +0400 Subject: [PATCH 1/2] add instance for Star --- bower.json | 1 + src/Control/Parallel/Class.purs | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/bower.json b/bower.json index db1a379..08f5b00 100644 --- a/bower.json +++ b/bower.json @@ -23,6 +23,7 @@ "purescript-maybe": "^4.0.0", "purescript-newtype": "^3.0.0", "purescript-prelude": "^4.0.0", + "purescript-profunctor": "^4.0.0", "purescript-refs": "^4.0.0", "purescript-transformers": "^4.0.0" }, diff --git a/src/Control/Parallel/Class.purs b/src/Control/Parallel/Class.purs index 8b539a5..489c0ec 100644 --- a/src/Control/Parallel/Class.purs +++ b/src/Control/Parallel/Class.purs @@ -14,6 +14,7 @@ import Data.Either (Either) import Data.Functor.Compose (Compose(..)) import Data.Maybe (Maybe(..)) import Data.Newtype (class Newtype) +import Data.Profunctor.Star (Star(..)) import Effect.Class (class MonadEffect, liftEffect) import Effect.Ref as Ref @@ -39,6 +40,10 @@ instance monadParMaybeT :: Parallel f m => Parallel (Compose f Maybe) (MaybeT m) parallel (MaybeT ma) = Compose (parallel ma) sequential (Compose fa) = MaybeT (sequential fa) +instance monadParStar :: Parallel f m => Parallel (Star f a) (Star m a) where + parallel (Star f) = (Star $ parallel <<< f) + sequential (Star f) = (Star $ sequential <<< f) + -- | The `ParCont` type constructor provides an `Applicative` instance -- | based on `ContT Unit m`, which waits for multiple continuations to be -- | resumed simultaneously. From c4e12d0c31e6f3582243cb9cc1c6ccfd3f2e05d8 Mon Sep 17 00:00:00 2001 From: Irakli Safareli Date: Sun, 10 Mar 2019 16:35:57 +0400 Subject: [PATCH 2/2] add Costar instance --- src/Control/Parallel/Class.purs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/Control/Parallel/Class.purs b/src/Control/Parallel/Class.purs index 489c0ec..7338d26 100644 --- a/src/Control/Parallel/Class.purs +++ b/src/Control/Parallel/Class.purs @@ -14,6 +14,7 @@ import Data.Either (Either) import Data.Functor.Compose (Compose(..)) import Data.Maybe (Maybe(..)) import Data.Newtype (class Newtype) +import Data.Profunctor.Costar (Costar(..)) import Data.Profunctor.Star (Star(..)) import Effect.Class (class MonadEffect, liftEffect) import Effect.Ref as Ref @@ -44,6 +45,11 @@ instance monadParStar :: Parallel f m => Parallel (Star f a) (Star m a) where parallel (Star f) = (Star $ parallel <<< f) sequential (Star f) = (Star $ sequential <<< f) +instance monadParCostar :: Parallel f m => Parallel (Costar f a) (Costar m a) where + parallel (Costar f) = (Costar $ sequential >>> f) + sequential (Costar f) = (Costar $ parallel >>> f) + + -- | The `ParCont` type constructor provides an `Applicative` instance -- | based on `ContT Unit m`, which waits for multiple continuations to be -- | resumed simultaneously.