csys: make env a neuron, move setup To Environ
This commit is contained in:
parent
48d8bcdfa8
commit
e657dd5a2e
4 changed files with 20 additions and 15 deletions
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue