Safe Haskell | None |
---|---|
Language | Haskell2010 |
This module defines two interpreters for mapping the Cloud Haskell semantics to the constructors of STTerm
.
- evalSession :: forall s r a. HasConstraint Serializable s => Session s r a -> SessionInfo -> Process a
- evalSessionEq :: Session s s a -> Process a
- evalSessionEq' :: Session s s a -> SessionInfo -> Process a
Documentation
evalSession :: forall s r a. HasConstraint Serializable s => Session s r a -> SessionInfo -> Process a Source #
This function unpacks a Session
to a STTerm
using a given SessionInfo
.
It then evaluates the STTerm
by mapping Cloud Haskell semantics to each constructor of STTerm
.
The function relies on that there exists another session (on a different process) that is also being evaluated (using evalSession) and acts as the dual the session that function is now evaluating.
The underlying communication method is a session typed channel (STChannelT
). There should be no interference from other processes, unless
you go through the effort of sharing the send port.
evalSessionEq :: Session s s a -> Process a Source #
Similar to evalSession
, except for that it does not evaluate session typed actions.
Only returns and lifted computations are evaluated. This also means that there does not need to be a dual session that is evaluated on a different process.
It also assumes that SessionInfo
is not used. Use evalSessionEq'
if this is not the case.
evalSessionEq' :: Session s s a -> SessionInfo -> Process a Source #
Same as evalSessionEq
, but you may now provide a SessionInfo
.