From 63df25d65f1b9d95b11908c8b81efebc904848f9 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Sun, 17 May 2026 22:25:38 +0200 Subject: [PATCH] csys: first try registering neuron creation in env --- lib/csys/environ.ex | 10 ++++++++++ lib/csys/program.ex | 11 +++-------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/lib/csys/environ.ex b/lib/csys/environ.ex index 1157bd3..66e02fb 100644 --- a/lib/csys/environ.ex +++ b/lib/csys/environ.ex @@ -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 diff --git a/lib/csys/program.ex b/lib/csys/program.ex index 52d2d44..42682e7 100644 --- a/lib/csys/program.ex +++ b/lib/csys/program.ex @@ -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