Propriedades do gráfico

Vale lembrar alguns aspectos de como o MCG processa dados.

Dados imutáveis

A maioria dos dados que flui em um gráfico não pode ser alterada. Em outras palavras, ele são imutáveis. Algumas operações podem parecer insinuar que elas alteram os dados, como o operador Matriz Anexar, mas o que está acontecendo do ponto de vista de um gráfico é que o nó gera uma nova cópia do objeto.

Em alguns casos, o compilador pode executar a otimização para evitar a criação de cópias de dados quando eles não são necessários, desde que a propriedade de transparência referencial seja mantida.

Transparência referencial

Muitos operadores no MCG têm transparência referencial. Isso quer dizer que, se forem atribuídas as mesmas entradas, elas gerarão sempre as mesmas saídas e não terão nenhum outro efeito observável.

Funções como dados

Um dos aspectos interessantes (e úteis) do MCG é que ela é uma linguagem de programação visual totalmente funcional. Isso significa que os nós podem receber funções como entradas e retornar funções como saídas. As funções podem ser criadas dinamicamente usando operadores, por exemplo, Criar e Vincular, e também podem ser armazenadas em matrizes.

Qualquer subgráfico pode ser tratado como uma função conectando-se a porta de saída da função de um nó a outro nó que aceita funções como tipo de entrada. Quando um nó é conectado como uma função, os conectores desconectados de todos os nós em seu gráfico constituem os argumentos da função.

Ordem de avaliação não determinista

O MCG não garante que as entradas do operador serão avaliadas em uma ordem específica, com exceção do caso de operadores de fluxo de controle, por exemplo, o operador Se ou o operador Sequência. É possível em alguns casos que uma entrada seja pré-avaliada e armazenada em cache pelo compilador ou que duas entradas sejam avaliadas paralelamente.