I'm not sure what the use case is you were trying to address but this seems very similar to a run length encoded use case. If so, this isn't that hard to roll with existing code. Here:
https://gist.github.com/benjamintanweihao/7ea8f15a0b6bb7cca26e So, yeah, we don't _need_ this functionality. That said, bear in mind, that whenever new things are added to core libraries they have to be supported from that point forward. So we tend to be conservative about what gets added to core libraries (and justifiably so). -- Onorio On Wednesday, June 22, 2016 at 3:15:27 PM UTC-4, Bartosz Kalinowski wrote: > > 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/9c82bef7-1db9-4ca3-9c8e-e05aaf66ab14%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
