defmodule Scopes.CSys.Environ do alias Scopes.CSys alias Scopes.Shape def setup({state, proc}) do env = CSys.neuron({[], &proc_env/2, [], self()}) CSys.neuron({state, proc, [], env}) end def proc_env(msg, scope) do case Shape.head(msg) do [:csys, :created | _rest] -> register_creation(msg, scope) _ -> nil end send(CSys.env(scope), msg) end def register_creation(msg, {state, proc, syns, env}) do new = Shape.data(msg).new CSys.update_neuron({[new | state], proc, syns, env}) end end