Safe Haskell | None |
---|

- closureApply :: Closure (a -> b) -> Closure a -> Closure b
- closureConst :: forall a b. (Typeable a, Typeable b) => Closure (a -> b -> a)
- closureUnit :: Closure ()
- type CP a b = Closure (a -> Process b)
- cpIntro :: (Typeable a, Typeable b) => Closure (Process b) -> CP a b
- cpElim :: Typeable a => CP () a -> Closure (Process a)
- cpId :: forall a. Typeable a => CP a a
- cpComp :: forall a b c. (Typeable a, Typeable b, Typeable c) => CP a b -> CP b c -> CP a c
- cpFirst :: forall a b c. (Typeable a, Typeable b, Typeable c) => CP a b -> CP (a, c) (b, c)
- cpSwap :: forall a b. (Typeable a, Typeable b) => CP (a, b) (b, a)
- cpSecond :: (Typeable a, Typeable b, Typeable c) => CP a b -> CP (c, a) (c, b)
- cpPair :: (Typeable a, Typeable a', Typeable b, Typeable b') => CP a b -> CP a' b' -> CP (a, a') (b, b')
- cpCopy :: forall a. Typeable a => CP a (a, a)
- cpFanOut :: (Typeable a, Typeable b, Typeable c) => CP a b -> CP a c -> CP a (b, c)
- cpLeft :: forall a b c. (Typeable a, Typeable b, Typeable c) => CP a b -> CP (Either a c) (Either b c)
- cpMirror :: forall a b. (Typeable a, Typeable b) => CP (Either a b) (Either b a)
- cpRight :: forall a b c. (Typeable a, Typeable b, Typeable c) => CP a b -> CP (Either c a) (Either c b)
- cpEither :: (Typeable a, Typeable a', Typeable b, Typeable b') => CP a b -> CP a' b' -> CP (Either a a') (Either b b')
- cpUntag :: forall a. Typeable a => CP (Either a a) a
- cpFanIn :: (Typeable a, Typeable b, Typeable c) => CP a c -> CP b c -> CP (Either a b) c
- cpApply :: forall a b. (Typeable a, Typeable b) => CP (CP a b, a) b
- cpBind :: (Typeable a, Typeable b) => Closure (Process a) -> Closure (a -> Process b) -> Closure (Process b)
- cpSeq :: Closure (Process ()) -> Closure (Process ()) -> Closure (Process ())

# Generic combinators

closureApply :: Closure (a -> b) -> Closure a -> Closure bSource

closureConst :: forall a b. (Typeable a, Typeable b) => Closure (a -> b -> a)Source

# Arrow combinators for processes

cpPair :: (Typeable a, Typeable a', Typeable b, Typeable b') => CP a b -> CP a' b' -> CP (a, a') (b, b')Source

cpLeft :: forall a b c. (Typeable a, Typeable b, Typeable c) => CP a b -> CP (Either a c) (Either b c)Source

cpRight :: forall a b c. (Typeable a, Typeable b, Typeable c) => CP a b -> CP (Either c a) (Either c b)Source

cpEither :: (Typeable a, Typeable a', Typeable b, Typeable b') => CP a b -> CP a' b' -> CP (Either a a') (Either b b')Source