Compare commits

..

2 commits

2 changed files with 25 additions and 16 deletions

View file

@ -72,16 +72,19 @@ defmodule Scopes.Core.Environ do
Core.send_message(rcvr, head, data) Core.send_message(rcvr, head, data)
end end
def send_value(addr, value) do def send_value(addr = {dom, _cat, _item}, value) do
send_message(addr, ~w(csys data)a, %{value: value}) send_message(addr, [dom, :data], %{value: value})
end
def create(addr = {dom, _cat, _item}, args \\ []) do
send_message(addr, [dom, :create], Map.new(args))
end end
def connect(addr = {dom, _cat, _item}, target, op \\ []) do def connect(addr = {dom, _cat, _item}, target, op \\ []) do
send_message(addr, [dom, :connect], send_message(addr, [dom, :connect], %{target: get_cell(target), op: op})
%{target: get_cell(target), op: op})
end end
# delegating tasks to env # delegating tasks to env (possibly obsolete)
def delegate(env, func) do def delegate(env, func) do
Core.send_message(env, {:exec, func}) Core.send_message(env, {:exec, func})

View file

@ -126,23 +126,29 @@ defmodule Scopes.Core.Program do
two = {:csys, :c00, "1-1"} two = {:csys, :c00, "1-1"}
three = {:csys, :s01, "1-1"} three = {:csys, :s01, "1-1"}
[ [
fn -> Environ.send_message(zero, ~w(csys create)a, step_create(zero, addr: one, dir: :pred, op: [Core.data_only(), negate()]),
%{op: [Core.data_only(), negate()], addr: one, dir: :pred}) end, step_create(one, addr: two, dir: :succ, op: Core.data_only()),
fn -> Environ.send_message(one, ~w(csys create)a, step_create(two, addr: three, dir: :pred),
%{op: Core.data_only(), addr: two, dir: :succ}) end, step_connect(three, zero)
fn -> Environ.send_message(two, ~w(csys create)a,
%{addr: three, dir: :pred}) end,
fn -> Environ.connect(three, zero) end
] ]
end end
def init_recursive_1() do def init_recursive_1() do
zero = {:csys, :c00, "0-0"} zero = {:csys, :c00, "0-0"}
[ [
fn -> Environ.send_message(zero, ~w(csys create)a, %{dir: :succ}) end, step_create(zero, dir: :succ),
fn -> Environ.send_message(zero, ~w(csys create)a, step_create(zero, addr: {:csys, :s01, "1-1"}, dir: :pred),
%{addr: {:csys, :s01, "1-1"}, dir: :pred}) end, step_connect(zero, zero, negate())
fn -> Environ.connect(zero, zero, negate()) end
] ]
end end
# predefined init / execution steps
def step_create(addr, args) do
fn -> Environ.create(addr, args) end
end
def step_connect(addr, target, op \\ []) do
fn -> Environ.connect(addr, target, op) end
end
end end