Module

Control.Parallel

Package
purescript-parallel
Repository
purescript/purescript-parallel

#parApply Source

parApply :: forall f m a b. Parallel f m => m (a -> b) -> m a -> m b

Apply a function to an argument under a type constructor in parallel.

#parTraverse Source

parTraverse :: forall f m t a b. Parallel f m => Applicative f => Traversable t => (a -> m b) -> t a -> m (t b)

Traverse a collection in parallel.

#parTraverse_ Source

parTraverse_ :: forall f m t a b. Parallel f m => Applicative f => Foldable t => (a -> m b) -> t a -> m Unit

Traverse a collection in parallel, discarding any results.

#parSequence Source

parSequence :: forall a t m f. Parallel f m => Applicative f => Traversable t => t (m a) -> m (t a)

#parSequence_ Source

parSequence_ :: forall a t m f. Parallel f m => Applicative f => Foldable t => t (m a) -> m Unit

#parOneOf Source

parOneOf :: forall a t m f. Parallel f m => Alternative f => Foldable t => Functor t => t (m a) -> m a

Race a collection in parallel.

#parOneOfMap Source

parOneOfMap :: forall a b t m f. Parallel f m => Alternative f => Foldable t => Functor t => (a -> m b) -> t a -> m b

Race a collection in parallel while mapping to some effect.

Re-exports from Control.Parallel.Class

#ParCont Source

newtype ParCont :: (Type -> Type) -> Type -> Typenewtype ParCont m a

The ParCont type constructor provides an Applicative instance based on ContT Unit m, which waits for multiple continuations to be resumed simultaneously.

ParCont sections of code can be embedded in sequential code by using the parallel and sequential functions:

loadModel :: ContT Unit (Eff (ajax :: AJAX)) Model
loadModel = do
  token <- authenticate
  sequential $
    Model <$> parallel (get "/products/popular/" token)
          <*> parallel (get "/categories/all" token)

Constructors

Instances

#Parallel Source

class Parallel :: (Type -> Type) -> (Type -> Type) -> Constraintclass (Apply m, Apply f) <= Parallel f m | m -> f, f -> m where

The Parallel class abstracts over pairs of Applys where one of them (m) composes sequentially, and the other (f) composes in parallel. m is usually a Monad, which enforces the sequential nature of its composition, but it doesn't need to be.

Members

Instances