|
@@ -2,43 +2,23 @@
|
|
|
-export([pipe/2, pipe/1, bind/2, feed/2, sequence/2, sequence/1]).
|
|
|
|
|
|
pipe(Op1, Op2) ->
|
|
|
- flow_graph:append(Op1, Op2).
|
|
|
+ flow_graph:pipe([Op1, Op2]).
|
|
|
|
|
|
-pipe([Op|Ops]) ->
|
|
|
- lists:foldl(fun(O, G) -> pipe(G, O) end, Op, Ops).
|
|
|
+pipe([Op]) ->
|
|
|
+ Op;
|
|
|
+pipe(Ops = [_|_]) ->
|
|
|
+ flow_graph:pipe(Ops).
|
|
|
|
|
|
-bind(Task, FuncT) ->
|
|
|
- feed(Task, ebb_prim:dynamic(FuncT)).
|
|
|
+bind(Task, Gen) ->
|
|
|
+ feed(Task, ebb_prim:dynamic(Gen)).
|
|
|
|
|
|
feed(Task, Op) ->
|
|
|
- flow_graph:append(Task, Op).
|
|
|
+ flow_graph:pipe([Task, Op]).
|
|
|
|
|
|
sequence(Task1, Task2) ->
|
|
|
- M = flow_graph:merge(),
|
|
|
- H = flow_graph:hole(),
|
|
|
- Out1 = flow_graph:get_out(Task1),
|
|
|
- Out2 = flow_graph:get_out(Task2),
|
|
|
- T = flow_graph:add_edge_list(
|
|
|
- link_tasks(Task1, Task2),
|
|
|
- [flow_graph:flow(Out1,H),
|
|
|
- flow_graph:index(H,M,1),
|
|
|
- flow_graph:index(Out2,M,2)]),
|
|
|
- flow_graph:reroute(T, flow_graph:singleton(M)).
|
|
|
+ flow_graph:sequence([Task1, Task2]).
|
|
|
|
|
|
-sequence([Task1]) -> Task1;
|
|
|
-sequence([Task1|Tasks]) ->
|
|
|
- M = flow_graph:merge(),
|
|
|
- LinkMerge = fun(N, T) ->
|
|
|
- H = flow_graph:hole(),
|
|
|
- Out = flow_graph:get_out(T),
|
|
|
- {N+1, flow_graph:add_edge_list(
|
|
|
- T,
|
|
|
- [flow_graph:flow(Out,H),
|
|
|
- flow_graph:index(H,M,N)])}
|
|
|
- end,
|
|
|
- Add = fun(T, {N, Ts}) -> LinkMerge(N, link_tasks(T, Ts)) end,
|
|
|
- {_N, Ts} = lists:foldl(Add, LinkMerge(1, Task1), Tasks),
|
|
|
- flow_graph:reroute(Ts, flow_graph:singleton(M)).
|
|
|
-
|
|
|
-link_tasks(Task1, Task2) ->
|
|
|
- flow_graph:append([Task1, flow_graph:singleton(flow_graph:void()), Task2]).
|
|
|
+sequence([Task]) ->
|
|
|
+ Task;
|
|
|
+sequence(Tasks = [_|_]) ->
|
|
|
+ flow_graph:sequence(Tasks).
|