Data::Hopen::G - Namespace for graph-related items in hopen
Almost everything graph-related in hopen lives under
Data::Hopen::G. This includes nodes, edges, and graphs (specifically, directed acyclic graphs, DAGs).
Classes are (all under
Entity - something in the graph Runnable - something that has a run() method and need/want namesets (TODO should this be a Role::Tiny role?) Link - connection between Nodes Node - abstract graph node Op - abstract operation Goal - a node that just gives a name to a set of operations PassthroughOp - no-op concrete operation DAG - the graph
Specific use cases of the graph are not under
...::G, such as tools used in the hopen build system (App::hopen).
An operation. Operations can, e.g., transform their inputs or invoke a visitor routine based on their inputs. Operations can output values representing the visitor action they took, or that will later be used by the visitor or downstream nodes.
A connection between operations. Edges are not provided to a visitor Instead, they have the opportunity to transform their inputs to outputs, possibly with reference to the environment.
A graph of operations and edges. Every relationship between operations and edges is expressed in a DAG. A DAG has zero or more goals (Data::Hopen::G::Goal) that represent named activities expressed in the DAG.