Content deleted Content added
Made a bit more NPOV, added citations |
|||
Line 24:
==Features==
* A language
* Everything is an expression<ref name="elixirhome" />▼
* Erlang functions can be called from Elixir without runtime impact, due to compilation to Erlang byte code, and vice versa
* Meta programming
* [[Polymorphism (computer science)|Polymorphism]] via a mechanism called protocols. ''Enumerable'' is an example of a protocol, and is inspired by [[Clojure]] reducers <ref>{{ city web|url=https://pminten.github.io/blog/2013/09/05/elixirs-enumerable/|title=Elixir Enumerable| accessdate=2014-09-07}}</ref>
* Support for documentation via Ruby-like Doc-strings in the Markdown formatting language <ref name="elixirhome" />
* [[Shared nothing architecture|Shared nothing concurrent programming]] via message passing ([[Actor model]])
* Emphasis on [[recursion (computer science)|recursion]] and [[higher-order function]]s instead of [[side-effect (computer science)|side-effect]]-based [[loop (computing)|looping]]
* Lightweight concurrency utilizing Erlang's mechanisms with simplified syntax (e.g. ''Task'')<ref name="elixirhome" />
▲* Everything is an expression
* [[Lazy evaluation|Lazy]] and [[Futures and promises|async collections]] with streams
* [[Pattern matching]] <ref name="elixirhome" />
* [[Unicode]] support and [[UTF-8]] strings
|