freer-0.2.3.0: Implementation of the Freer Monad

CopyrightAlej Cabrera 2015
LicenseBSD-3
Maintainercpp.cabrera@gmail.com
Stabilityexperimental
PortabilityPOSIX
Safe HaskellNone
LanguageHaskell2010

Control.Monad.Freer

Description

 

Synopsis

Documentation

class Member' t r (FindElem t r) => Member t r Source

Minimal complete definition

inj, prj

Instances

Member' t r (FindElem t r) => Member t r Source 

type family Members m r :: Constraint Source

Equations

Members (t : c) r = (Member t r, Members c r) 
Members `[]` r = () 

data Eff r a Source

The Eff representation.

Status of a coroutine (client): * Val: Done with the value of type a * E : Sending a request of type Union r with the continuation Arrs r b a

run :: Eff `[]` w -> w Source

Runs a set of Effects. Requires that all effects are consumed. Typically composed as follows: > run . runEff1 eff1Arg . runEff2 eff2Arg1 eff2Arg2 (program)

send :: Member t r => t v -> Eff r v Source

send a request and wait for a reply

data NonDetEff a where Source

A data type for representing nondeterminstic choice

Constructors

MZero :: NonDetEff a 
MPlus :: NonDetEff Bool 

makeChoiceA :: Alternative f => Eff (NonDetEff : r) a -> Eff r (f a) Source

A handler for nondeterminstic effects

msplit :: Member NonDetEff r => Eff r a -> Eff r (Maybe (a, Eff r a)) Source