We could not optimize the implementation in any significant way (without C
code which we don't have in Elixir).

I think that in order to add a new function to Enum, which is already
pretty filled up with functions, we would need a few use cases that justify
this. Even then, I'm in favour of keeping the API surface smaller and
composing with Enum.reduce/3.

Andrea

On Sun, 31 Mar 2019 at 18:08, Robert Dober <[email protected]> wrote:

> Please compare
>
>       coll |> Enum.map_reverse(&my_fun/1)
>
> to
>
>       coll |> Enum.reduce([], fn ele, acc -> [fun(ele)|acc] end)
>
> And also would Enum.map_reverse/2 not be even more optimized, although
> performance was not my primary motivation.
> --
> Non datemi consigli che so sbagliare da solo
> (Giuseppe Di Stefano)
>
>
>
> On Sun, Mar 31, 2019 at 6:01 PM Andrea Leopardi <[email protected]>
> wrote:
>
>> You can do the same in an efficient way with Enum.reduce/3 and prepending
>> to the accumulator:
>>
>> Enum.reduce(list, [], fn elem, acc ->
>>   [fun.(elem) | acc ]
>> end)
>>
>> I think given this is small and straightforward, an addition of
>> reverse_map to the standard library could be something that we can avoid.
>>
>> Andrea
>>
>> On Sun, 31 Mar 2019 at 17:58, Robert Dober <[email protected]>
>> wrote:
>>
>>> Hi there
>>>
>>> I do this all the time, travering a reversed list and accumulating a
>>> transformation into a new list, unreversed now.
>>>
>>> Is this not a very frequent FP pattern.
>>>
>>> I would quite happy to use `Enum.reverse_map` which would be more
>>> efficent than my eternal internal remimplementation:
>>>
>>> ```elixir
>>>
>>>        defp map_reverse(collection, fun)
>>> do
>>>
>>>     _map_reverse(collection, fun,
>>> [])
>>>
>>>
>>> end
>>>
>>>
>>>
>>>   defp _map_reverse(collection, fun,
>>> result)
>>>
>>>   defp _map_reverse([], _, result)
>>> do
>>>
>>>
>>> result
>>>
>>>
>>> end
>>>
>>>   defp _map_reverse([head|rest], fun, result)
>>> do
>>>
>>>     _map_reverse(rest, fun,
>>> [fun.(head)|result])
>>>
>>>   end
>>> ```
>>>
>>> Any thoughts?
>>>
>>> KR
>>> Robert
>>>
>>> --
>>> 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/a4fe903e-9661-448e-ba80-0b8cfc4f8bff%40googlegroups.com
>>> <https://groups.google.com/d/msgid/elixir-lang-core/a4fe903e-9661-448e-ba80-0b8cfc4f8bff%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>> --
>>
>> Andrea Leopardi
>> [email protected]
>>
>> --
>> 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/CAM9Rf%2BLpJYUfHg901KY3EF8MwrX3pXHEacrdRywM%3D-qkzw77RQ%40mail.gmail.com
>> <https://groups.google.com/d/msgid/elixir-lang-core/CAM9Rf%2BLpJYUfHg901KY3EF8MwrX3pXHEacrdRywM%3D-qkzw77RQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
> --
> 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/CA%2Bvts6t8J36kgR-xUFKhEaEbUEoYB-8x%2BAmVArRt9%2BaFMnQxjA%40mail.gmail.com
> <https://groups.google.com/d/msgid/elixir-lang-core/CA%2Bvts6t8J36kgR-xUFKhEaEbUEoYB-8x%2BAmVArRt9%2BaFMnQxjA%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>
-- 

Andrea Leopardi
[email protected]

-- 
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/CAM9Rf%2B%2BCdhQtBj7OWufguidufuP%2B9%2Bw%3DD73h1Lmd_6q%3DTrZ%3D%3DA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to