|
Control.Concurrent.Session.Types |
|
|
|
Synopsis |
|
|
|
Documentation |
|
|
|
|
|
|
|
class ProgramToMVarsOutgoing progRef prog mvars | progRef prog -> mvars where | Source |
|
| Associated Types | type ProgramToMVarsOutgoingT progRef prog | Source |
|
| | Methods | programToMVarsOutgoing :: progRef -> prog -> IO mvars | Source |
|
| | Instances | |
|
|
|
|
|
newtype SessionChain prog prog' from to res | Source |
|
The representation of a computation that performs work using
session types. Again, really quite similar to a more-parameterized
State monad.
| Constructors | | Instances | |
|
|
|
|
|
A process ID. This is a tiny bit like ThreadId but rather heavily annotated.
| Constructors | Pid :: RawPid -> TyMap sessionsToIdx idxsToPairStructs -> Pid prog prog' invertedSessions sessionsToIdx idxsToPairStructs | |
| Instances | (TySubList invertedSessionsB invertedSessionsA True, TySubList sessionsToIdxB sessionsToIdxA True, ReducePairStructs (TyMap sessionsToIdxA idxsToPairStructsA) (TyMap sessionsToIdxB idxsToPairStructsB) (TyMap Nil Nil) (TyMap sessionsToIdxB idxsToPairStructsB)) => CompatibleTypes SpecialPid (Pid prog prog' invertedSessionsA sessionsToIdxA idxsToPairStructsA) (Pid prog prog' invertedSessionsB sessionsToIdxB idxsToPairStructsB) | Eq (Pid prog prog' invertedSessions sessionsToIdx idxsToPairStructs) | Ord (Pid prog prog' invertedSessions sessionsToIdx idxsToPairStructs) | Show (Pid prog prog' invertedSessions sessionsToIdx idxsToPairStructs) | PidEq (Pid progA progA' invertedSessionsA sessionsToIdxA idxsToPairStructsA) (Pid progB progB' invertedSessionsB sessionsToIdxB idxsToPairStructsB) |
|
|
|
|
Constructors | IPid :: Pid prog prog' invertedSessions sessionsToIdx idxsToPairStructs -> [RawPid] -> InternalPid prog prog' invertedSessions sessionsToIdx idxsToPairStructs | |
| Instances | |
|
|
pidToRawPid :: Pid prog prog' invertedSessions sessionsToIdx idxsToPairStructs -> RawPid | Source |
|
|
iPidToPid :: InternalPid prog prog' invertedSessions sessionsToIdx idxsToPairStructs -> Pid prog prog' invertedSessions sessionsToIdx idxsToPairStructs | Source |
|
|
|
Provides a way to compare two Pids. Of course, if the Pids have
different type params, then they are definitely different, but it's
still convenient to be able to do something like (==) on them.
| | Methods | | | Instances | PidEq (Pid progA progA' invertedSessionsA sessionsToIdxA idxsToPairStructsA) (Pid progB progB' invertedSessionsB sessionsToIdxB idxsToPairStructsB) |
|
|
|
newtype InterleavedChain internalPid from to res | Source |
|
Constructors | InterleavedChain | | runInterleavedChain :: internalPid -> from -> IO (res, to, internalPid) | |
|
| Instances | |
|
|
|
Instances | |
|
|
|
Instances | (TySubList invertedSessionsB invertedSessionsA True, TySubList sessionsToIdxB sessionsToIdxA True, ReducePairStructs (TyMap sessionsToIdxA idxsToPairStructsA) (TyMap sessionsToIdxB idxsToPairStructsB) (TyMap Nil Nil) (TyMap sessionsToIdxB idxsToPairStructsB)) => CompatibleTypes SpecialPid (Pid prog prog' invertedSessionsA sessionsToIdxA idxsToPairStructsA) (Pid prog prog' invertedSessionsB sessionsToIdxB idxsToPairStructsB) |
|
|
|
|
Instances | |
|
|
|
Constructors | | Instances | |
|
|
Produced by Haddock version 2.4.2 |