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.

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.