From the homepage:
Elixir is a programming language built on top of the Erlang VM. As Erlang, it is a functional language built to support distributed, fault-tolerant, non-stop applications with hot code swapping.
Elixir is also dynamic typed but, differently from Erlang, it is also homoiconic, allowing meta-programming via macros. Elixir also supports polymorphism via protocols (similar to Clojure’s), dynamic records and provides a reference mechanism.
Finally, Elixir and Erlang share the same bytecode and data types. This means you can invoke Erlang code from Elixir (and vice-versa) without any conversion or performance hit. This allows a developer to mix the expressiveness of Elixir with the robustness and performance of Erlang.
If you want to install Elixir or learn more about it, check our getting started guide. [Former link, http://elixir-lang.org/getting_started/1.html updated to: http://elixir-lang.org/getting-started/introduction.html.]
Quite possibly of interest to Erlang programmers.
Take a close look at the languages mentioned in the Wikipedia article on homoiconicity as other examples of homoiconic languages.
Question: The list contains “successful” and “unsuccessful” languages. Care to comment on possible differences that account for the outcomes?
Thinking a “successful” semantic mapping language will need to have certain characteristics. The question is, of course, which ones?