diff --git a/lib/csys/csys.ex b/lib/csys/csys.ex index bbc2c0d..58cb54d 100644 --- a/lib/csys/csys.ex +++ b/lib/csys/csys.ex @@ -69,7 +69,7 @@ defmodule Scopes.CSys do # notifications def notify_created(new, scope) do - msg = Shape.create([:csys, :created], data: %{old: self(), new: new}) + msg = Shape.create(~w(csys created)a, data: %{old: self(), new: new}) notify(msg, scope) end diff --git a/lib/csys/environ.ex b/lib/csys/environ.ex index 879f1a8..9b4c4c0 100644 --- a/lib/csys/environ.ex +++ b/lib/csys/environ.ex @@ -28,7 +28,11 @@ defmodule Scopes.CSys.Environ do neurons = [new | state.neurons] names = data[:name] && Map.put(state.names, data.name, new) || state.names {step, seq} = List.pop_at(state.init_seq, 0) - CSys.update({%State{neurons: neurons, names: names, init_seq: seq}, proc, syns, env}) - if step, do: step.(neurons) + state1 = %State{neurons: neurons, names: names, init_seq: seq} + CSys.update({state1, proc, syns, env}) + if step do + Process.sleep(1) + step.(neurons) + end end end diff --git a/lib/csys/program.ex b/lib/csys/program.ex index 12e5483..04e2e67 100644 --- a/lib/csys/program.ex +++ b/lib/csys/program.ex @@ -103,13 +103,13 @@ alias Scopes.CSys def create_succ(msg, scope) do new = CSys.create(msg, restart(scope)) data = Shape.data(msg) - CSys.send_message(self(), [:csys, :connect], Map.put(data, :target, new)) + CSys.send_message(self(), ~w(csys connect)a, Map.put(data, :target, new)) end def create_pred(msg, scope) do new = CSys.create(msg, restart(scope)) data = Shape.data(msg) - CSys.send_message(new, [:csys, :connect], Map.put(data, :target, self())) + CSys.send_message(new, ~w(csys connect)a, Map.put(data, :target, self())) end # synapse operations @@ -133,14 +133,14 @@ alias Scopes.CSys # demo init sequences def init_seq_b1() do [ - fn [zero | _ns] -> CSys.send_message(zero, [:csys, :create, :pred], + fn [zero | _ns] -> CSys.send_message(zero, ~w(csys create pred)a, %{op: [CSys.data_only(), negate()]}) end, - fn [one | _ns] -> CSys.send_message(one, [:csys, :create, :succ], + fn [one | _ns] -> CSys.send_message(one, ~w(csys create succ)a, %{op: CSys.data_only()}) end, - fn [two | _ns] -> CSys.send_message(two, [:csys, :create, :pred]) end, + fn [two | _ns] -> CSys.send_message(two, ~w(csys create pred)a) end, fn [three | others] -> zero = List.last(others) - CSys.send_message(three, [:csys, :connect], %{target: zero}) + CSys.send_message(three, ~w(csys connect)a, %{target: zero}) end ] end diff --git a/test/csys_test.exs b/test/csys_test.exs index c23ba26..1546a5d 100644 --- a/test/csys_test.exs +++ b/test/csys_test.exs @@ -19,12 +19,12 @@ defmodule Scopes.CSysTest do describe "basic:" do test "minimal-neural-net" do _env = Environ.setup(Program.prepare_basic(), Program.init_seq_b1()) - zero = receive_data([:csys, :created]).new + zero = receive_data(~w(csys created)a).new CSys.send_value(zero, 0) assert 0 = receive_data().value - one = receive_data([:csys, :created]).new - _two = receive_data([:csys, :created]).new - three = receive_data([:csys, :created]).new + one = receive_data(~w(csys created)a).new + _two = receive_data(~w(csys created)a).new + three = receive_data(~w(csys created)a).new Process.sleep(50) CSys.send_value(one, 1) assert receive_data().value == 1 @@ -38,8 +38,8 @@ defmodule Scopes.CSysTest do def init_recursive_1() do [ fn [zero] -> - CSys.send_message(zero, [:csys, :connect], %{target: zero, op: Program.negate()}) - CSys.send_message(zero, [:csys, :create, :succ]) + CSys.send_message(zero, ~w(csys connect)a, %{target: zero, op: Program.negate()}) + CSys.send_message(zero, ~w(csys create succ)a) end ] end @@ -47,8 +47,8 @@ defmodule Scopes.CSysTest do describe "recursive:" do test "zero + effector" do _env = Environ.setup(Program.prepare_basic(), init_recursive_1()) - zero = receive_data([:csys, :created]).new - _eff = receive_data([:csys, :created]).new + zero = receive_data(~w(csys created)a).new + _eff = receive_data(~w(csys created)a).new Process.sleep(50) CSys.send_value(zero, 42) assert receive_data().value == 42 diff --git a/test/shape_test.exs b/test/shape_test.exs index 55d6255..55c6abf 100644 --- a/test/shape_test.exs +++ b/test/shape_test.exs @@ -5,7 +5,7 @@ defmodule Scopes.ShapeTest do describe "shape:" do test "basic" do - rec = Shape.create([:dom, :data], data: %{value: 42}) + rec = Shape.create(~w(dom data)a, data: %{value: 42}) assert 42 = Shape.data(rec).value end end