NAME
Data::Hopen::G - Namespace for graph-related items in hopen
SYNOPSIS
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 Data::Hopen::G
):
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).
ELEMENTS
Data::Hopen::G::Op
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.
Data::Hopen::G::Link
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.
Data::Hopen::G::DAG
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.
VISITORS
"run" in Data::Hopen::G::DAG can take a visitor
parameter. The visitor should be an instance of a concrete subclass of Data::Hopen::Visitor.