Hey guys, this is my first proposal so please be kind :) I don't know if WE
need this functionality, but I certainly needed this so I already developed
it. Obviously I'm not that familiar with Elixir yet so it might happen that
there is something very simmilar somewhere in the code, but I looked and
couldn't find it.
My idea is to "cleanup" lists which have duplicate values, but in a way
that will merge the duplicate values (not just ignore them like uniq/1 does)
by using given function (one of the params). Please let me know what you
think.
Examples:
iex> Enum.merge([1, 2, 3, 3, 2, 1], fn (x, y) -> x + y end)
[2, 4, 6]
# This one is simmilar to `Enum.uniq/1`
iex> Enum.merge([1, 2, 3, 3, 2, 1], fn (x, _y) -> x end)
[1, 2, 3]
iex> Enum.merge_by([{1, :x}, {2, :y}, {1, :z}], fn (x, _) -> x end,
fn {x, _} -> x end)
[{1, :x}, {2, :y}]
iex> Enum.merge_by([a: {:tea, 2}, b: {:tea, 2}, c: {:coffee, 1}], fn
(x, _) -> x end, fn {_, y} -> y end)
[a: {:tea, 2}, c: {:coffee, 1}]
iex> Enum.merge_by([%{k: "a", v: 1}, %{k: "b", v: 2}, %{k: "a", v:
3}, %{k: "b", v: 4}], fn(t1, t2) -> %{t1 | v: t1.v + t2.v} end, fn s -> s.k
end)
[%{k: "a", v: 4}, %{k: "b", v: 6}]
Because I'm new here I already created PR on github which obviously got
closed immediately... :) But there is an upside to this, I already
implemented this functionality so you can see the examples in more
"human-readable" form on github
(https://github.com/elixir-lang/elixir/pull/4854/files) to better
understand what I wanted to achieve :)
Please let me know if you think this would be useful and maybe if there is
no simmilar functionality already!
--
You received this message because you are subscribed to the Google Groups
"elixir-lang-core" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/elixir-lang-core/d0e39a77-a693-4436-8c44-57e111d06602%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.