Hi Tom the order of the argument breaks sometimes and define an auxiliary function makes the code more readable.
for this sample you can simplify ... |> (content fn -> File.write! (output_path, content) end). but it will be more readable if we can write something like: |> File.write! (Output_path, &1) with macros you can invent your own pipe see this project as an inspiration: https://github.com/ruby2elixir/plumber_girl have fun! On Sun, Mar 10, 2019 at 6:37 AM <[email protected]> wrote: > The pipeline operator is one of the best features of the language, however > there are some instances where you want to continue a chain of pipelines > for clarity but can't because the argument order is not conducive to > piping. For example here is an example when working with files: > > defmodule Chess.PGN do > def unique_checkmates(input_path, output_path) > path > |> File.stream!() > |> Stream.chunk_every(21) > |> Stream.filter(fn chunk -> checkmate?(Enum.at(chunk, 17)) end) > |> Stream.uniq_by(fn chunk -> Enum.at(chunk, 19) end) > |> Stream.map(fn chunk -> Enum.join(chunk, "") end) > |> Enum.join("") > |> write_file(output_path) > end > > def write_file(content, output_path) do > File.write!(output_path, content) > end > end > > Instead of having to add a dummy method I would like to double pipe into > File.write which would be cleaner. > > ... > ||> File.write!(output_path) > > I think this could also be extended to triple, and quadruple pipes. Five > seems like overkill, but I think you could make the argument for arbitrary > levels of piping. > > -- > 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/c6f02f27-fca4-4d5b-9c88-e966faaf9c0c%40googlegroups.com > <https://groups.google.com/d/msgid/elixir-lang-core/c6f02f27-fca4-4d5b-9c88-e966faaf9c0c%40googlegroups.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%2B5LQzMw-BWrY5uqstPb8Qd4_%2B2qFtJnUWoJb2F7wM%2Bm6-ui0w%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
