funflow-1.5.0: Workflows with arrows

Safe HaskellSafe
LanguageHaskell2010

Control.Funflow.Diagram

Description

A Diagram is a representation of an arrow with labels. No computation is actually performed by a diagram, it just carries around a description. We explot the fact that in 7.10, everything is typeable to label the incoming and outgoing node types.

Synopsis

Documentation

newtype NodeProperties Source #

Constructors

NodeProperties 

Fields

data Diagram ex a b where Source #

Constructors

Node :: NodeProperties -> Proxy a -> Proxy b -> Diagram ex a b 
Seq :: Diagram ex a b -> Diagram ex b c -> Diagram ex a c 
Par :: Diagram ex a b -> Diagram ex c d -> Diagram ex (a, c) (b, d) 
Fanin :: Diagram ex a c -> Diagram ex b c -> Diagram ex (Either a b) c 
Try :: Diagram ex a b -> Diagram ex a (Either ex b) 
Instances
Arrow (Diagram ex) Source # 
Instance details

Defined in Control.Funflow.Diagram

Methods

arr :: (b -> c) -> Diagram ex b c #

first :: Diagram ex b c -> Diagram ex (b, d) (c, d) #

second :: Diagram ex b c -> Diagram ex (d, b) (d, c) #

(***) :: Diagram ex b c -> Diagram ex b' c' -> Diagram ex (b, b') (c, c') #

(&&&) :: Diagram ex b c -> Diagram ex b c' -> Diagram ex b (c, c') #

ArrowChoice (Diagram ex) Source # 
Instance details

Defined in Control.Funflow.Diagram

Methods

left :: Diagram ex b c -> Diagram ex (Either b d) (Either c d) #

right :: Diagram ex b c -> Diagram ex (Either d b) (Either d c) #

(+++) :: Diagram ex b c -> Diagram ex b' c' -> Diagram ex (Either b b') (Either c c') #

(|||) :: Diagram ex b d -> Diagram ex c d -> Diagram ex (Either b c) d #

ArrowError ex (Diagram ex :: Type -> Type -> Type) Source # 
Instance details

Defined in Control.Funflow.Diagram

Methods

try :: Diagram ex e c -> Diagram ex e (Either ex c) Source #

Category (Diagram ex :: Type -> Type -> Type) Source # 
Instance details

Defined in Control.Funflow.Diagram

Methods

id :: Diagram ex a a #

(.) :: Diagram ex b c -> Diagram ex a b -> Diagram ex a c #

node :: forall arr a b ex. Arrow arr => arr a b -> [Text] -> Diagram ex a b Source #

Construct a labelled node