Designing a language requires some trade-offs and the "do" is one of them. It is a keyword and its main goal is to reduce the number of parenthesis. You could write this in Elixir:
if true, do: (something; then_another_something)
But with do, you can give a many expressions straight away: if true do
something
then_another_something
end
So, at first it may give the impression that the commas and do are aleatory, but after you get the hang of the syntax, it will hopefully make your code less noisy.Finally, yes, the semantics in the end are Erlang semantics. My previous attempt at writing a language for the Erlang VM machine was fighting against Erlang semantics and that didn't end up well. :)
In the future though, you may choose to go with Elixir instead of Erlang because of its features. Macros and protocols are good features to make you more productive and your code more extensible. I am available for discussion at #elixir-lang on freenode.