Пример использования Догберта с заменой flat_map
на map
действительно помог мне понять, что происходит:
iex(1)> Permute.shuffle(~w(A B C), 3)
[
[
["A", ["A", ["A"]], ["A", ["B"]], ["A", ["C"]]],
["A", ["B", ["A"]], ["B", ["B"]], ["B", ["C"]]],
["A", ["C", ["A"]], ["C", ["B"]], ["C", ["C"]]]
],
[
["B", ["A", ["A"]], ["A", ["B"]], ["A", ["C"]]],
["B", ["B", ["A"]], ["B", ["B"]], ["B", ["C"]]],
["B", ["C", ["A"]], ["C", ["B"]], ["C", ["C"]]]
],
[
["C", ["A", ["A"]], ["A", ["B"]], ["A", ["C"]]],
["C", ["B", ["A"]], ["B", ["B"]], ["B", ["C"]]],
["C", ["C", ["A"]], ["C", ["B"]], ["C", ["C"]]]
]
]