Skip to content

Instantly share code, notes, and snippets.

@jimmybot
Created August 21, 2015 19:47
Show Gist options
  • Save jimmybot/c870d8e7c0396f774405 to your computer and use it in GitHub Desktop.
Save jimmybot/c870d8e7c0396f774405 to your computer and use it in GitHub Desktop.
-module(nested_loops).
-export([pair_list_list/2, pair_e_list/2, pair_list_list2/2, pair_e_list2/2, pair_list_list3/2, pair_list_list4/2]).
pair_list_list(List1, List2) ->
pair_list_list(List1, List2, []).
pair_list_list([], _, Acc) ->
Acc;
pair_list_list(List1, List2, Acc) ->
[E|Rest] = List1,
Acc2 = pair_e_list(E, List2, Acc),
pair_list_list(Rest, List2, Acc2).
pair_e_list(E, List) ->
pair_e_list(E, List, []).
pair_e_list(_, [], Acc) ->
Acc;
pair_e_list(E, List, Acc) ->
[F|Rest] = List,
pair_e_list(E, Rest, [{E,F}|Acc]).
pair_list_list2(List1, List2) ->
lists:map(fun(E) -> pair_e_list2(E, List2) end, List1).
pair_e_list2(F, List) ->
lists:map(fun(E) -> {F,E} end, List).
pair_list_list3(List1, List2) ->
lists:map(
fun(E) -> lists:map(
fun(F) -> {F, E} end,
List2
)
end,
List1
).
pair_list_list4(List1, List2) ->
[{X, Y, Z} || X <- List1, Y <- List2].
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment