csys: make env a neuron, move setup To Environ

This commit is contained in:
Helmut Merz 2026-05-12 07:53:14 +02:00
parent 48d8bcdfa8
commit e657dd5a2e
4 changed files with 20 additions and 15 deletions

View file

@ -2,7 +2,6 @@ defmodule Scopes.CSys do
require Logger require Logger
alias Scopes.Core.Actor alias Scopes.Core.Actor
#alias Scopes.CSys.Environ
alias Scopes.Shape alias Scopes.Shape
def neuron(scope) do def neuron(scope) do
@ -21,19 +20,10 @@ defmodule Scopes.CSys do
# helper functions # helper functions
defp process(msg, scope) do def process(msg, scope) do
proc(scope).(msg, scope) proc(scope).(msg, scope)
end end
def setup(_progname, prog) do
#env = Environ.create(self())
#Environ.put_prog(env, progname, prog)
#proc = Environ.get_stage(env, progname, :initial)
proc = prog[:initial]
#neuron({[], proc, [], env})
neuron({[], proc, [], self()})
end
def send_value(rcvr, val) do def send_value(rcvr, val) do
msg = Shape.create([:csys, :data], data: %{value: val}) msg = Shape.create([:csys, :data], data: %{value: val})
Actor.send(rcvr, msg) Actor.send(rcvr, msg)

View file

@ -1,6 +1,21 @@
defmodule Scopes.CSys.Environ do defmodule Scopes.CSys.Environ do
use Agent use Agent
alias Scopes.CSys
def setup(prog) do
env = CSys.neuron({[], &proc/2, [], self()})
proc = prog[:initial]
CSys.neuron({[], proc, [], env})
#CSys.neuron({[], proc, [], self()})
end
def proc(msg, scope) do
send(CSys.env(scope), msg)
end
# legacy /obsolete: Agent-based environ with program registry
def create(parent, progs \\ %{}) do def create(parent, progs \\ %{}) do
{:ok, env} = Agent.start_link( fn -> {parent, progs} end, name: __MODULE__) {:ok, env} = Agent.start_link( fn -> {parent, progs} end, name: __MODULE__)
env env

View file

@ -4,7 +4,7 @@ defmodule Scopes.CSys.Program do
syns: 1, env: 1 syns: 1, env: 1
] ]
#alias Scopes.CSys.Environ alias Scopes.Core.Actor
# programs # programs
@ -33,8 +33,7 @@ defmodule Scopes.CSys.Program do
# processor steps # processor steps
def notify(msg, scope) do def notify(msg, scope) do
#Environ.notify(env(scope), msg) Actor.send(env(scope), msg)
send(env(scope), msg)
end end
def forward(msg, scope) do def forward(msg, scope) do

View file

@ -4,6 +4,7 @@ defmodule Scopes.CSysTest do
alias Scopes.Core.Actor alias Scopes.Core.Actor
alias Scopes.CSys alias Scopes.CSys
alias Scopes.CSys.Environ
alias Scopes.CSys.Program alias Scopes.CSys.Program
alias Scopes.Shape alias Scopes.Shape
@ -18,7 +19,7 @@ defmodule Scopes.CSysTest do
describe "basic:" do describe "basic:" do
test "minimal-neural-net" do test "minimal-neural-net" do
zero = CSys.setup(:basic, Program.basic_prog()) zero = Environ.setup(Program.basic_prog())
#Actor.send(zero, "Hello Zero!") #Actor.send(zero, "Hello Zero!")
CSys.send_value(zero, "Hello Zero!") CSys.send_value(zero, "Hello Zero!")
assert "Hello Zero!" = receive_data().value assert "Hello Zero!" = receive_data().value