> I think maybe is a clearer name for what the statement is doing and the lack of the 'do' block
It's because basically everything in Elixir is a macro :), and the do block is an argument/parameter to that macro:
maybe x do
...
end
# is really
maybe x, do: ...
# which ends up being a macro call with a named parameter
maybe(x, do: ...)
Same goes for many (all?) other things in Elixir: if x do
...
end
# is really
if x, do: ...
# which ends up being a macro call with a named parameter
if(x, do: ...)
And so on.But it took me a very long to come to grips with this, too :)
Re:OTP at a High Level (2019)
by square_usual on Monday February 19, 2024 @04:44PM
(#39435183)
I think GP is talking more about the fact that you can have a do block, not about what it is.
Yeah exactly, in Erlang the 'do' portion would just go in the same code block as the conditionals.
Re:OTP at a High Level (2019)
by nesarkvechnep on Tuesday February 20, 2024 @02:08AM
(#39438726)
So you say `maybe` is better than `with` without ever using Elixir, and `with`? I hope your team is not full of people making blanket statements like this.
The main thing, and maybe I just am missing something, but I don't really understand what the point of the 'do' in Elixir's 'with' is? In Erlang you just have the maybe and anything that would go in that do block would just go inside the maybe expression. That seems a lot better to me.
I also just prefer the look of Erlang's maybe. I think maybe is a clearer name for what the statement is doing and the lack of the 'do' block looks better to me and makes it easier to read.