Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- defmodule Example do
- @doc """
- iex> stable_group_by([c: 1, b: 1, b: 2, b: 3, a: 1, a: 2, a: 3], &elem(&1, 0))
- %{a: [a: 1, a: 2, a: 3], b: [b: 1, b: 2, b: 3], c: [c: 1]}
- """
- def stable_group_by(list, mapper_fun) do
- list
- |> Enum.reduce(%{}, fn(item, acc) ->
- Map.update(acc, mapper_fun.(item), [item], fn(sub_list)-> [ item | sub_list ] end)
- end)
- |> Enum.map(fn {k, v} -> {k, Enum.reverse(v)} end)
- |> Map.new
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement