3 ms·
As I mentioned upthread, most Elixir functions are designed to have the thing they operate on as first argument. computation() |> &(Map.put(my_map, key, &1
by sph 4y ago
As I mentioned upthread, most Elixir functions are designed to have the thing they operate on as first argument.
computation() |> &(Map.put(my_map, key, &1))
is terrible style when
Map.put(my_map, key, computation())
works just as well and is more readable. It is pretty rare to have a pipeline that needs to insert the value elsewhere than the first position. And please, do not write single element pipelines, I see them far too often from Elixir beginners.
- ollien 4y agoI agree! I even pointed this out in my comment, but perhaps not clearly :) I think that the way it's done is a net-positive in designing cleaner APIs, but there are times when I've already done a pipeline, and storing the output is just the last step. This last step is just frustratingly, not always possible. I don't think one should do something like the above, it's just what you must resort to if you _did_ want to do it.
- sph 4y agoThere is nothing wrong with doing data = this |> is |> a |> pipeline save_to_file(file, data) Instead of trying to put the call to save_to_file into the pipeline by wrapping it in a closure.