csys: first try registering neuron creation in env
This commit is contained in:
parent
66abbe44f5
commit
63df25d65f
2 changed files with 13 additions and 8 deletions
|
|
@ -1,6 +1,7 @@
|
||||||
defmodule Scopes.CSys.Environ do
|
defmodule Scopes.CSys.Environ do
|
||||||
|
|
||||||
alias Scopes.CSys
|
alias Scopes.CSys
|
||||||
|
alias Scopes.Shape
|
||||||
|
|
||||||
def setup({state, proc}) do
|
def setup({state, proc}) do
|
||||||
env = CSys.neuron({[], &proc_env/2, [], self()})
|
env = CSys.neuron({[], &proc_env/2, [], self()})
|
||||||
|
|
@ -8,6 +9,15 @@ defmodule Scopes.CSys.Environ do
|
||||||
end
|
end
|
||||||
|
|
||||||
def proc_env(msg, scope) do
|
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)
|
send(CSys.env(scope), msg)
|
||||||
end
|
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
|
end
|
||||||
|
|
|
||||||
|
|
@ -54,8 +54,8 @@ defmodule Scopes.CSys.Program do
|
||||||
basic(msg, scope)
|
basic(msg, scope)
|
||||||
end
|
end
|
||||||
|
|
||||||
def basic(msg = {head, _info}, scope) do
|
def basic(msg, scope) do
|
||||||
case head do
|
case Shape.head(msg) do
|
||||||
[:csys, :connect | _rest] -> connect(msg, scope)
|
[:csys, :connect | _rest] -> connect(msg, scope)
|
||||||
[:csys, :create, :succ | _rest] -> create_succ(msg, scope)
|
[:csys, :create, :succ | _rest] -> create_succ(msg, scope)
|
||||||
[:csys, :create, :pred | _rest] -> create_pred(msg, scope)
|
[:csys, :create, :pred | _rest] -> create_pred(msg, scope)
|
||||||
|
|
@ -66,10 +66,6 @@ defmodule Scopes.CSys.Program do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def basic(msg, scope) do
|
|
||||||
CSys.forward(msg, scope) || CSys.notify(msg, scope)
|
|
||||||
end
|
|
||||||
|
|
||||||
# helper functions
|
# helper functions
|
||||||
|
|
||||||
def restart({state, _proc, syns, env}) do
|
def restart({state, _proc, syns, env}) do
|
||||||
|
|
@ -86,8 +82,7 @@ defmodule Scopes.CSys.Program do
|
||||||
def connect(msg, {state, proc, syns, env}) do
|
def connect(msg, {state, proc, syns, env}) do
|
||||||
data = Shape.data(msg)
|
data = Shape.data(msg)
|
||||||
op = data[:op] || CSys.noop()
|
op = data[:op] || CSys.noop()
|
||||||
target = data[:target]
|
syn = synapse(data[:target], op, 0)
|
||||||
syn = synapse(target, op, 0)
|
|
||||||
update_neuron({state, proc, [syn | syns], env})
|
update_neuron({state, proc, [syn | syns], env})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue