Advertisement
Guest User

Untitled

a guest
May 27th, 2016
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.45 KB | None | 0 0
  1. defmodule Example do
  2. @doc """
  3. iex> stable_group_by([c: 1, b: 1, b: 2, b: 3, a: 1, a: 2, a: 3], &elem(&1, 0))
  4. %{a: [a: 1, a: 2, a: 3], b: [b: 1, b: 2, b: 3], c: [c: 1]}
  5. """
  6. def stable_group_by(list, mapper_fun) do
  7. list
  8. |> Enum.reduce(%{}, fn(item, acc) ->
  9. Map.update(acc, mapper_fun.(item), [item], fn(sub_list)-> [ item | sub_list ] end)
  10. end)
  11. |> Enum.map(fn {k, v} -> {k, Enum.reverse(v)} end)
  12. |> Map.new
  13. end
  14. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement