speculation-1.5.0.1: A framework for safe, programmable, speculative parallelism

Portabilityportable
Stabilityprovisional
MaintainerEdward Kmett <ekmett@gmail.com>
Safe HaskellSafe-Inferred

Control.Concurrent.Speculation.Class

Contents

Description

Versions of the combinators from the speculation package with the signature rearranged to enable them to be used directly as actions in the Cont and ContT monads or any other Codensity-shaped monad.

Synopsis

Documentation

class MonadSpec m whereSource

Methods

specByM :: (a -> a -> Bool) -> a -> a -> m aSource

spec with a user supplied comparison function

Instances

Monad m => MonadSpec (ContT r m) 

specM :: (MonadSpec m, Eq a) => a -> a -> m aSource

When a is unevaluated, spec g a evaluates the current continuation with g while testing if g == a, if they differ, it re-evalutes the continuation with a. If a was already evaluated, the continuation is just directly applied to a instead.

specOnM :: (MonadSpec m, Eq c) => (a -> c) -> a -> a -> m aSource

spec' with a user supplied comparison function

Basic speculation