News for hackers. Stuff that matters.
Re:OTP at a High Level (2019) by troupo on Monday February 19, 2024 @04:24PM (#39435002)
> 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.
Re:OTP at a High Level (2019) by Miner49er on Monday February 19, 2024 @05:03PM (#39435370)
Yeah exactly, in Erlang the 'do' portion would just go in the same code block as the conditionals.