Elixir (programming language): Difference between revisions

Content deleted Content added
m Remove option on the usefulness or tooling.
WikiCleanerBot (talk | contribs)
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>. Full interoperability with Erlang code, without [[Runtime (program lifecycle phase)|runtime]] impact.
* 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" />. Libraries often implement small [[Domain-specific language|___domain-specific languages]], such as for databases or testing.
* 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.