csys: first try registering neuron creation in env

This commit is contained in:
Helmut Merz 2026-05-17 22:25:38 +02:00
parent 66abbe44f5
commit 63df25d65f
2 changed files with 13 additions and 8 deletions

View file

@ -1,6 +1,7 @@
defmodule Scopes.CSys.Environ do
alias Scopes.CSys
alias Scopes.Shape
def setup({state, proc}) do
env = CSys.neuron({[], &proc_env/2, [], self()})
@ -8,6 +9,15 @@ defmodule Scopes.CSys.Environ do
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

View file

@ -54,8 +54,8 @@ defmodule Scopes.CSys.Program do
basic(msg, scope)
end
def basic(msg = {head, _info}, scope) do
case head do
def basic(msg, scope) do
case Shape.head(msg) do
[:csys, :connect | _rest] -> connect(msg, scope)
[:csys, :create, :succ | _rest] -> create_succ(msg, scope)
[:csys, :create, :pred | _rest] -> create_pred(msg, scope)
@ -66,10 +66,6 @@ defmodule Scopes.CSys.Program do
end
end
def basic(msg, scope) do
CSys.forward(msg, scope) || CSys.notify(msg, scope)
end
# helper functions
def restart({state, _proc, syns, env}) do
@ -86,8 +82,7 @@ defmodule Scopes.CSys.Program do
def connect(msg, {state, proc, syns, env}) do
data = Shape.data(msg)
op = data[:op] || CSys.noop()
target = data[:target]
syn = synapse(target, op, 0)
syn = synapse(data[:target], op, 0)
update_neuron({state, proc, [syn | syns], env})
end