Hacker News new | past | comments | ask | show | jobs | submit login

Hey metajack, glad you enjoyed some bits of the language and also thanks for the criticism.

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.




Why isn't this possible?

    if true: (something; then_another_something)
    
    if true: do
      something
      then_another_something
    end
Then "do … end" is the same as "begin … end" in Ruby. Also, you might be able to get rid of that colon too.


That was a very simple example to explain which problem do/end is trying to solve. We also need to consider how your changes would fit with if/else, if/elsif/else and other macros like case/switch.

That said, please join #elixir-lang on freenode and I would love to talk with you about your suggestions. Maybe we can figure out some improvements?


Great project. I really hope Elixir takes off. I can try to convince my bosses that the transition from Ruby to Erlang isn't going to be syntactically hard :)


Very interesting Jose. Is Elixir used to develop production Erlang systems anywhere?


Not yet. Hoping to change this situation around June/July this year.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: