Some aspects of how MCG processes data are worth bearing in mind.
Most data that flows through a graph cannot be changed. In other words, it is immutable. Some operations might seem to suggest that they change data, such as the Array Append operator, but what is happening from the point of view of a graph is that the node outputs a new copy of the object.
In some cases, the compiler might perform optimization to avoid creating copies of data when this isn't necessary, as long as the property of referential transparency is maintained.
Many operators in MCG are referentially transparent. That is to say that given the same inputs, they will always produce the same outputs, and have no other observable effects.
One of the interesting (and useful) aspects of MCG is that it is a fully functional visual programming language. This means that nodes can receive functions as inputs and return functions as outputs. Functions can be created dynamically using operators such as Compose and Bind, and can even be stored in arrays.
Any sub-graph can be treated as a function by connecting the function output port of a node to another node that accepts functions as the input type. When a node is connected as a function, the unconnected connectors of all of the nodes in its graph constitute the function arguments.
MCG doesn't guarantee that the operator inputs will be evaluated in a specific order except in the case of control flow operators such as the If operator or the Sequence operator. It is possible in some cases that an input is pre-evaluated and cached by the compiler, or that two inputs are evaluated in parallel.