summaryrefslogtreecommitdiff |
diff options
author | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2019-08-19 01:15:23 +0200 |
---|---|---|
committer | Nathanael Sensfelder <SpamShield0@MultiAgentSystems.org> | 2019-08-19 01:15:23 +0200 |
commit | 78f689ceed7819943b85e6c63e1c96396ca0e386 (patch) | |
tree | 4d98756fa463b30e4c3c3c00dc52ab57570880f4 /src/shared/util | |
parent | 7a1686695e70b68b2d4ad49c0f5bc967fa6d1013 (diff) |
Adds naive collection generator.
Diffstat (limited to 'src/shared/util')
-rw-r--r-- | src/shared/util/shr_lists_util.erl | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/src/shared/util/shr_lists_util.erl b/src/shared/util/shr_lists_util.erl index 0568692..348d002 100644 --- a/src/shared/util/shr_lists_util.erl +++ b/src/shared/util/shr_lists_util.erl @@ -11,13 +11,35 @@ [ %%% Gentoo hasn't marked Erlang/OTP 21 as stable yet, but I'd like to %%% use this function. - %%% TODO: remove once lists:search/2 is available. - search/2 + %%% TODO: remove once lists:search/2 is available. + search/2, + product/3 ] ). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% LOCAL FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +-spec product_internals + ( + list(A), + list(B), + fun((A, B) -> C), + list(C) + ) + -> list(C). +product_internals ([], _ListB, _Fun, Result) -> + Result; +product_internals ([A|Next], ListB, Fun, Result) -> + product_internals + ( + Next, + ListB, + Fun, + ( + lists:map(fun (B) -> Fun(A, B) end, ListB) + ++ Result + ) + ). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% EXPORTED FUNCTIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -30,3 +52,7 @@ search (Pred, [Hd|Tail]) -> end; search (Pred, []) when is_function(Pred, 1) -> false. + +-spec product (fun((A, B) -> C), list(A), list(B)) -> list(C). +product (Fun, ListA, ListB) -> + product_internals(ListA, ListB, Fun, []). |