dsounded

dsounded

Hello dear community!

So it came from my daily tasks, it’s just a proposal which once approved I’d gladly try to implement.

Before creating the topic I tried to search if something like that was already asked, so seems like not.

The idea is to have a pipe which returns the value that was passed as a first argument from the previous pipe back (even though the function itself can return something else) eg:

defmodule Test do
  def call do
    "users.csv"
    |> File.stream!() # raw data
    |> prepare() # list of maps
    |>> insert() # the same list of maps
    |>> send_emails() # the same list of maps
    |> log()
  end
  
  ...
  
  defp insert(records) do
    Repo.insert(User, records)
  end

  defp send_emails(records) do
    MailService.send(to: records)
  end

  defp log(records) do
    # do some logs related things
  end
end

Right now it’s possible to design it in a way:

defp insert(records) do
  Repo.insert(User, records)
  records
end

defp send_emails(records) do
  MailService.send(to: records)
  records
end

So I’d like to hear your thoughts on this. The benefits I can see are: you can still test in isolation (it’s original returning value) and also compose related things into one pipe. (|>> shows it goes one step further (like to pass to the one after the next pipe)

It’s pretty subjective though that’s why I want to ask your opinion on this before I start investigating the pull request.

Showing Posts 1 to 2

LostKobrakai

LostKobrakai

There‘s tap in elixir to do that since 1.12

dsounded

dsounded OP

Oh, this makes sense, so I can do:

|> tap(&insert/1)

Cool, thanks

— All posts loaded —

Where Next? Top

Trending in Discussions Top

budgie
A little off-topic, but I feel like people here have a good head on their shoulders. I used to be quite good at making software. Was luc...
New
axelson
Hi there! :wave: @frigidcode and I (but mostly him) have been running an Elixir Book club, we’re almost done with Designing Elixir Syste...
New
achempion
I’ve been using Emacs as my main code editor for more than a two years. It’s a custom build version although I’ve tried doom emacs and sp...
New
juhalehtonen
There has been a thread to discuss the Stack Overflow Developer Survey on this forum every year since 2018, so here’s yet another one for...
New
budgie
I love Elixir. It’s one of 2 programming languages I’ve ever fallen in love with. But I don’t use it anymore. Serverless was the promis...
New
jtormey
Lately I’ve been thinking about how to organize components as a LiveView application grows. One of the pain points I’ve found (for myself...
New
Null-logic-0
What IDE or editor are you using for Elixir development? Personally, I use Zed, and I really like it, but sometimes I wish there were a ...
New

Other Trending Topics Top

GenericJam
Edit: 2026 May 15 - This post is archived. Mob is alive!! Main docs: mob v0.7.11 — Documentation A bit of explanation for the slightly c...
New
garrison
Hobbes is a low-level distributed database for the Elixir programming language. Hobbes provides a simple, safe, and scalable storage lay...
New
KristerV
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
mudasobwa
I fully migrated to my own harness from Anthropic/Gemini and I think it’s time to share it. Welcome DSH, the DeepSeek Harness, fully writ...
New
mcass19
ExRatatui lets you cook up rich terminal UIs in Elixir, powered by Rust’s ratatui via Rustler NIFs. Build interactive terminal applicatio...
New
georgeguimaraes
Just published claude-code-elixir, a plugin marketplace for Claude Code with Elixir support. These are the plugins I’ve been using for my...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews