packages feed

liblawless-0.18.0: Source/Machine.hs

module Machine (
    module Data.Machine.Concurrent,
    (⇝),
    (⇜)
    ) where

import Lawless hiding ((<~), (~>))
import Data.Machine.Concurrent
import Control.Monad
import Control.Monad.Trans.Control

infixr 9 ⇜
infixl 9 ⇝
infixr 7 ↢
infixl 7 ↣
infixr 6 ⧻
infixr 6 ⫴

(⇝) ∷ Monad m ⇒ MachineT m k b → ProcessT m b c → MachineT m k c
(⇝) = (~>)

(⇜) ∷ Monad m ⇒ ProcessT m b c → MachineT m k b → MachineT m k c
(⇜) = (<~)

(↣) ∷ MonadBaseControl IO m ⇒ MachineT m k b → ProcessT m b c → MachineT m k c
(↣) = (>~>)

(↢) ∷ MonadBaseControl IO m ⇒ ProcessT m b c → MachineT m k b → MachineT m k c
(↢) = (<~<)

(⧻) ∷ ∀ m a b c d. MonadBaseControl IO m ⇒ ProcessT m a b → ProcessT m c d → ProcessT m (Either a c) (Either b d)
(⧻) = splitSum

(⫴) ∷ ∀ m a b r. MonadBaseControl IO m ⇒ ProcessT m a r -> ProcessT m b r -> ProcessT m (Either a b) r
(⫴) = mergeSum