|
@@ -45,18 +45,24 @@ func(F) ->
|
|
|
func(F, N) ->
|
|
|
ebb_prim:pipe([ebb_prim:func(F), ebb_prim:split(N)]).
|
|
|
|
|
|
-pipe(Xs = [_|_]) ->
|
|
|
- ebb_prim:pipe([ to_op(X) || X <- Xs ]);
|
|
|
-pipe(X) ->
|
|
|
- to_op(X).
|
|
|
+pipe(Xs) ->
|
|
|
+ case {ebb_prim:is_operation(Xs), is_list(Xs), is_tuple(Xs)} of
|
|
|
+ {true, _, _} -> Xs;
|
|
|
+ {_, true, _} -> ebb_prim:pipe([ to_op(X) || X <- Xs ]);
|
|
|
+ {_, _, true} -> ebb_prim:pipe([ to_op(X) || X <- tuple_to_list(Xs) ]);
|
|
|
+ {_, _, _} -> to_op(Xs)
|
|
|
+ end.
|
|
|
|
|
|
pipe(X, Y) ->
|
|
|
pipe([X, Y]).
|
|
|
|
|
|
-par(Xs = [_|_]) ->
|
|
|
- ebb_prim:par([ to_op(X) || X <- Xs ]);
|
|
|
-par(X) ->
|
|
|
- to_op(X).
|
|
|
+par(Xs) ->
|
|
|
+ case {ebb_prim:is_operation(Xs), is_list(Xs), is_tuple(Xs)} of
|
|
|
+ {true, _, _} -> Xs;
|
|
|
+ {_, true, _} -> ebb_prim:par([ to_op(X) || X <- Xs ]);
|
|
|
+ {_, _, true} -> ebb_prim:par([ to_op(X) || X <- tuple_to_list(Xs) ]);
|
|
|
+ {_, _, _} -> to_op(Xs)
|
|
|
+ end.
|
|
|
|
|
|
par(X, Y) ->
|
|
|
par([X, Y]).
|
|
@@ -92,10 +98,12 @@ switch(Branches) ->
|
|
|
ebb_prim:switch([ {Tag, to_op(X)} || {Tag, X} <- Branches ]).
|
|
|
|
|
|
to_op(X) ->
|
|
|
- case {ebb_prim:is_operation(X), is_function(X)} of
|
|
|
- {true, false} -> X;
|
|
|
- {false, true} -> func(X);
|
|
|
- {false, false} -> value(X)
|
|
|
+ case {ebb_prim:is_operation(X), is_function(X), is_list(X), is_tuple(X)} of
|
|
|
+ {true, _, _, _} -> X;
|
|
|
+ {_, true, _, _} -> ebb_prim:func(X);
|
|
|
+ {_, _, true, _} -> ebb_prim:par([ to_op(Y) || Y <- X ]);
|
|
|
+ {_, _, _, true} -> ebb_prim:par([ to_op(Y) || Y <- tuple_to_list(X) ]);
|
|
|
+ {_, _, _, _} -> ebb_prim:value(X)
|
|
|
end.
|
|
|
|
|
|
par_pipes(Args) ->
|
|
@@ -104,14 +112,13 @@ par_pipes(Args) ->
|
|
|
pipe_pars(Args) ->
|
|
|
ebb_prim:pipe([ nested_operation(X, fun par_pipes/1) || X <- Args ]).
|
|
|
|
|
|
-nested_operation(Ops, Continue) when is_list(Ops) ->
|
|
|
- Continue(Ops);
|
|
|
-nested_operation(F, _Continue) when is_function(F) ->
|
|
|
- ebb_prim:func(F);
|
|
|
-nested_operation(X, _Continue) ->
|
|
|
- case ebb_prim:is_operation(X) of
|
|
|
- true -> X;
|
|
|
- false -> ebb_prim:value(X)
|
|
|
+nested_operation(X, Continue) ->
|
|
|
+ case {ebb_prim:is_operation(X), is_function(X), is_list(X), is_tuple(X)} of
|
|
|
+ {true, _, _, _} -> X;
|
|
|
+ {_, true, _, _} -> ebb_prim:func(X);
|
|
|
+ {_, _, true, _} -> Continue(X);
|
|
|
+ {_, _, _, true} -> Continue(tuple_to_list(X));
|
|
|
+ {_, _, _, _} -> ebb_prim:value(X)
|
|
|
end.
|
|
|
|
|
|
%%%-----------------------------------------------------------------------------
|