csys: init steps, work in progress: create, connect via env

This commit is contained in:
Helmut Merz 2026-05-25 08:43:38 +02:00
parent dad38ad2c6
commit 5b9597ea79
2 changed files with 21 additions and 11 deletions

View file

@ -21,10 +21,6 @@ defmodule Scopes.CSys.Environ do
[:csys, :created | _rest] -> [:csys, :created | _rest] ->
process_creation(msg, scope) process_creation(msg, scope)
send(env, msg) send(env, msg)
[dom, :for, cat, item] ->
#IO.inspect(CSys.state(scope).cells)
cell = get_in(state.cells, [{dom, cat}, item])
CSys.send_message(cell, [dom, :data], Shape.data(msg))
_ -> send(env, msg) # forward message to application _ -> send(env, msg) # forward message to application
end end
end end
@ -50,11 +46,22 @@ defmodule Scopes.CSys.Environ do
end end
end end
def send_message(state, [dom, cat, item], head, data) do # accessing cell registry via state.cells
cell = get_in(state.cells, [{dom, cat}, item])
def get_cell(state, [dom, cat, item]) do
get_in(state.cells, [{dom, cat}, item])
end
def send_message(state, addr, head, data) do
cell = get_cell(state, addr)
CSys.send_message(cell, head, data) CSys.send_message(cell, head, data)
end end
def connect(state, addr, target, op) do
send_message(state, addr, ~w(csys connect)a,
%{target: get_cell(state, target), op: op})
end
# delegating tasks to env # delegating tasks to env
def delegate(env, func) do def delegate(env, func) do
@ -63,6 +70,5 @@ defmodule Scopes.CSys.Environ do
def forward_value(env, addr, value) do def forward_value(env, addr, value) do
delegate(env, &send_message(&1, addr, ~w(csys data)a, %{value: value})) delegate(env, &send_message(&1, addr, ~w(csys data)a, %{value: value}))
#CSys.send_message(env, [dom, :for, cat, item], %{value: value})
end end
end end

View file

@ -153,11 +153,15 @@ defmodule Scopes.CSys.Program do
end end
def init_recursive_1() do [ def init_recursive_1() do [
fn %Environ.State{neurons: [zero]} -> fn state ->
#zero = [:csys, :c00, {0, 0}] zero = [:csys, :c00, {0, 0}]
CSys.send_message(zero, ~w(csys connect)a, %{target: zero, op: negate()}) #%Environ.State{neurons: [zero]} = state
#CSys.send_message(zero, ~w(csys connect)a, %{target: zero, op: negate()})
#Environ.send_message(state, zero, ~w(csys connect)a, %{target: zero, op: negate()}) #Environ.send_message(state, zero, ~w(csys connect)a, %{target: zero, op: negate()})
CSys.send_message(zero, ~w(csys create succ)a, %{addr: [:csys, :e01, {1, 1}]}) Environ.connect(state, zero, zero, negate())
Environ.send_message(state, zero, ~w(csys create succ)a,
%{addr: [:csys, :e01, {1, 1}]})
#CSys.send_message(zero, ~w(csys create succ)a, %{addr: [:csys, :e01, {1, 1}]})
end end
] ]
end end