Elixir: Ruby-like Syntax and Homoiconicity for Erlang VM
elixir-lang.org
elixir-lang.org
The bigger problem is that it still has 90% of Erlang's semantics, and that turns out to be just as different in Ruby-like syntax as it is in Prolog-like syntax. I should note that this isn't a problem for me, but if the aim is to make the language more familiar to others, the syntax change is not much help.
My team and I evaluated using Elixir for game scripting on an Erlang-based engine, but ended up passing because if we were going to teach the scripters Erlang semantics, we might as well just use Erlang. We also looked at LFE and came to largely the same conclusion.
But, I applaud the effort and I plan to keep an eye on the project. We need more of these kinds of developments on BEAM, and hopefully some of their good ideas will trickle into the Erlang language itself.
My only thought about how Elixir could take off is if someone writes a killer web framework in Elixir and that starts meaning that the mixed apps we're always writing - Ruby on Rails web UI with an Erlang Web Services framework on the backend (that the iOS and Android apps are talking to) - could be just running inside the Erlang runtime. There would be no more need for that little piece of our deployment running Passenger - which is always the most fragile piece. That could do it.
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.
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 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?
https://gist.github.com/1582864
Note it is still experimental, take everything in there with a grain of salt.
1) Jose Valim (+ Plataforma) wrote it
2) Ryan Bates covered it recently
3) It is doing well on the Ruby Toolbox
I've been meaning to quaff Elixir for a while (am frenemies with Erlang). Maybe I'll write a HAML in it :).
Whatever it is, I like it.
In any case, I believe we can agree what it is called doesn't matter much. What we can do with it, does. :)