Content deleted Content added
m Remove option on the usefulness or tooling. Tags: Visual edit Mobile edit Mobile web edit Newcomer task Newcomer task: copyedit |
m v2.05b - Bot T20 CW#61 - Fix errors for CW project (Reference before punctuation) |
||
Line 37:
== Features ==
* [[Compiler|Compiles]] to [[bytecode]] for the [[BEAM (Erlang virtual machine)|BEAM virtual machine]] of [[Erlang (programming language)|Erlang]].<ref name="elixirhome">{{ cite web |url=https://elixir-lang.org/|title=Elixir | access-date=2014-09-07}}</ref>
* Scalability and fault-tolerance, thanks to Erlang's lightweight concurrency mechanisms<ref name="elixirhome" />
* [[Mix (build tool)|Built-in tooling]] for managing dependencies, code compilation, running tests, formatting code, remote debugging and more.
Line 48:
* [[Lazy evaluation|Lazy]] and [[Futures and promises|async collections]] with streams
* [[Maybe monad|Railway oriented programming]] via the <code>with</code> construct<ref>{{Cite web |last=Wlaschin |first=Scott |date=May 2013 |title=Railway Oriented Programming |url=https://fsharpforfunandprofit.com/rop/ |url-status=live |archive-url=https://web.archive.org/web/20210130221804/http://fsharpforfunandprofit.com/rop/ |archive-date=30 January 2021 |access-date=28 February 2021 |website=F# for Fun and Profit}}</ref>
* Hygienic [[metaprogramming]] by direct access to the [[abstract syntax tree]] (AST).<ref name="elixirhome" />
* Code execution at compile time. The Elixir compiler also runs on the [[BEAM (Erlang virtual machine)|BEAM]], so modules that are being compiled can immediately run code which has already been compiled.
* [[Polymorphism (computer science)|Polymorphism]] via a mechanism called protocols. [[Dynamic dispatch]], as in [[Clojure]], however, without [[multiple dispatch]] because Elixir protocols dispatch on a single type.
|