thousandsofthem
Trying to write good elixir code.
Input:
data = %{"a" => 0, "b" => 2, "c" => 0, "evilkey" => 666}
for specific keys i need to write some specific output if condition is true
Ruby version:
out = []
out << "text1" if data["a"] > 0
out << "text2" if data["b"] > 0
out << "text3" if data["c"] > 0
out
Ugly elixir version:
out = []
out = if data["a"] > 0 do
out ++ ["text1"]
else
out
end
...
...
out
Good elixir version: ???
Any thoughts here?
Trending in Questions
Hello!
Suppose you are building workflow (order / task / payment) processing system with the following requirements:
Each workflow con...
New
I’m aware of 2 such projects, are there others?
git: GitHub - team-alembic/realworld: A fullstack Phoenix LiveView application with back...
New
I having some trouble figuring out if I have set myself too strict of standards for my production server. Currently I can handle 75% of r...
New
Hi everyone.
My team and I have been working on a fairly modest app based around video streaming and chat, but we’ve landed a customer t...
New
I really like the adapter patterns that ecto, nebulex, waffle, etc. use and would love find something similar for a key management servic...
New
Hello folks!
So at work, we are seeing some situations where we have to define some “fixed” strings that are used across the codebase in...
New
How Can I Optimise Compile Time Dependencies
I have been building an elixir application for about 2 years now. Many modules and files ha...
New
Other Trending Topics
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
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
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
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
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
Emily is an Elixir library that runs Nx computations on Apple’s MLX. Install it as the default Nx backend and Nx, defn, Axon, Nx.Serving,...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #ai
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #blog-post
- #elixirconf-us
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #elixirconf-eu
- #api
- #forms
- #security
- #performance










Showing Posts 1 to 10- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
taiansu
A more functional apporach
michalmuskala
You can do that by using
ifas an expression and assembling list of values finally concatenating them together:You could even extract the
ifto a separate function, if the pattern if very repeating:thousandsofthem
Thanks!
The solution with filters and map look about right.
Re:
IO.iodata_to_binarything - i can’t just put things together this way, but overall it looks good, just need to add|> Enum.filter(fn(x) -> !is_nil(x) end), i.e.benwilson512
benwilson512
Also because nobody has mentioned this yet, the “ugly elixir version” is not actually an elixir version. It would not work at all because
outis immutable.thousandsofthem
It will, there are re-assignment for
out:so every consequent
outis different variableNobbZ
We do not have any guarantee of ordering in a map. So in theory the begs pour of this snippet is non deterministic, while in the OPs version we do have an explicit ordering of the keys and their transformation/concatenation into the result.
rvirding
I know people love
|>but you don’t have to use it:There is probably a function equivalent to
foldinEnumbut it is called something else and I could not immediately see it, hence using the one in:maps.thousandsofthem
Yeah, in my use-case ordering guarantees are required so maps don’t work (but for someone else it could be better approach). also there are other non-related keys as well (which should be filtered out)
plain
[..., ..., ...] |> remove nilsworks just fine - ordering granaries, short and easy to read codeNobbZ
It’s called reduce and is a left fold AFAIR