aratz-lasa
I have searched, but I have not found it. If it is a duplicated question I am so sorry.
I want to know how and when to format the returned values in a function. Because a lot of times, it is returned {:ok, value} and others just value . So, when should I use the status along the value?
Trending in Questions
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
Hello,
I know there is an approach for handling lists that allows for optimized traversal, but I can’t recall the specific method (somet...
New
Documentation
While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
Hi everyone,
I am toying with the idea of building a “match maker” for giving personal help to people that wants to start coding.
I sta...
New
So my question is quite simple and i have found no conclusive answer on forum, google or AI.
Should we use :erlang.float for Integer to ...
New
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New
I’m new to elixir and just tried to install the elixirLS extension for VScode(ium) and it is throwing some errors that I would like help ...
New
Other Trending Topics
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
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
I am happy to introduce the very α version of the new programming language compiled to BEAM.
Welcome Cure.
It has literally three kille...
New
Hobbes is a low-level distributed database for the Elixir programming language.
Hobbes provides a simple, safe, and scalable storage lay...
New
Hi everyone!
The first release candidate for the Expert language server project is now available!
We’ve published a press release detai...
New
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
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
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #ai
- #elixirconf-us
- #blog-post
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #elixirconf-eu
- #api
- #forms
- #metaprogramming
- #hex










Showing Posts 1 to 6- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
tty
From laziness we treat
valueas{:ok, value}but ifvalueis an error code then it should be{:error, value}.A status should be descriptive and makes sense for the callee when pattern matching.
E.g. if a function spec is
{:ok, :connected} | {:ok, :received} | {:error, error_code}it can easily be changed to:connected | :received | {:error, error_code}without losing information.kokolegorille
Often functions ending with ! will return the value, or raise an error.
While those without ! at the end return {:ok, value} | {:error, reason}
aratz-lasa
Currently, I am working on a project. I will use it as an example to explain my point.
There is a function that returns a list if you pass a
struct. And a second function that creates astructif you pass a string. However the second function’s string parameter, must have a specific format, otherwise it fails.So, the return formats I use for each function are:
struct{:ok, struct}or{:error, reason}Is it a good choice?
tme_317
I’d say #2 is the good choice since it’s much more idiomatic and found throughout the ecosystem for functions that can fail. And as @kokolegorille said earlier naming the function with a bang (i.e.
func!()) if the function raises instead of returning an error tuple.That said occasionally I find something like
Integer.parse/2in the stdlib can return{42, ""}or:error. OrRepo.get/3from Ecto which returns%Struct{...}ornilif the query returns 0 rows. I guess the idea if there are no records it is not an error condition and should return the concept of nothing which isnilor[]for a list of nothing.tty
For your first function it takes a
but yes I do understand what you mean. What happens when it is given an empty list ? Will the function fail or do you expect passing back error codes ?
structand returns alist()aratz-lasa
The first function receives an
structand returns alist()as you said. So, it is never “given a list”, and it is hard (almost impossible to fail?).So, I just return the
list()without any status (:ok,:error).However, the second function receives a
stringand returns astruct. But this can fail or do receive wrong values. That is why, the second function returns a status along with thestruct.