Elm (programming language): Difference between revisions

Content deleted Content added
m The title of citation for influencing Rust was incorrect, the source does contain the cited text, just is titled incorrectly
Tags: Mobile edit Mobile app edit iOS app edit App full source
MiniBill (talk | contribs)
Elm is also available on Linux and Arm
Tags: Mobile edit Mobile web edit
 
(One intermediate revision by one other user not shown)
Line 12:
| latest release date = {{Start date and age|2019|10|21}}<ref>{{Cite web |url=https://github.com/elm/compiler/releases |title=Releases: elm/Compiler |website=[[GitHub]]}}</ref>
| typing = [[Static typing|static]], [[Strong and weak typing|strong]], [[Type inference|inferred]]
| platform = [[x86-64]], [[AArch64|ARM]]
| operating system = [[macOS]], [[Microsoft Windows|Windows]], [[Linux]]
| license = [[Permissive license|Permissive]] ([[BSD license|Revised BSD]])<ref name=license>{{cite web |url=https://github.com/elm/compiler/blob/master/LICENSE |title=elm/compiler |website=GitHub|date=16 October 2021}}</ref>
| file ext = .elm
Line 24:
 
== History ==
Elm was initially designed by Evan Czaplicki as his thesis in 2012.<ref>{{cite web |url=https://elm-lang.org/assets/papers/concurrent-frp.pdf |title=Elm: Concurrent FRP for Functional GUIs}}</ref> The first release of Elm came with many examples and an online editor that made it easy to try out in a [[web browser]].<ref>{{cite web |url=https://elm-lang.org/try |title=Try Elm |website=elm-lang.org |access-date=2025-04-26 |url-status=live}}</ref> Czaplicki joined [[Prezi]] in 2013 to work on Elm,<ref>{{cite web |url=https://elm-lang.org/news/elm-and-prezi |title=elm and prezi |website=elm-lang.org}}</ref> and in 2016 moved to [[NoRedInk]] as an Open Source Engineer, also starting the Elm Software Foundation.<ref>{{cite web |url=https://elm-lang.org/news/new-adventures-for-elm |title=new adventures for elm |website=elm-lang.org}}</ref>
 
The initial implementation of the Elm compiler targets HyperText Markup Language ([[HTML]]), [[Cascading Style Sheets]] (CSS), and [[JavaScript]].<ref>{{cite web |url=https://github.com/elm/compiler |title=elm/compiler |website=GitHub|date=16 October 2021}}</ref> The set of core tools has continued to expand, now including a [[read–eval–print loop]] (REPL),<ref>{{cite web |url=https://elm-lang.org/news/repl |title=repl |website=elm-lang.org}}</ref> [[Package management system|package manager]],<ref>{{cite web |url=https://elm-lang.org/news/package-manager |title=package manager |website=elm-lang.org}}</ref> time-travelling debugger,<ref>{{cite web |url=https://elm-lang.org/news/time-travel-made-easy |title=Home |website=elm-lang.org}}</ref> and installers for [[macOS]] and [[Microsoft Windows|Windows]].<ref>{{cite web |url=https://guide.elm-lang.org/install.html |title=Install |website=guide.elm-lang.org}}</ref> Elm also has an ecosystem of community created [[Library (computing)|libraries]],<ref>{{Cite web |url=https://package.elm-lang.org/ |title=Elm packages |website=Elm-lang.org}}</ref> and Ellie, an advanced online editor that allows saved work and including community libraries.<ref>{{Cite web |url=https://ellie-app.com/ |title=Ellie |website=Ellie-app.com}}</ref>
 
== Features ==
Elm has a small set of language constructs, including traditional if-expressions, let-expressions for storing local values, and case-expressions for [[pattern matching]].<ref name="syntax">{{cite web |url=https://elm-lang.org/docs/syntax |title=syntax |website=elm-lang.org |access-date=2025-04-26 |url-status=live }}</ref> As a functional language, it supports [[anonymous function]]s, functions as arguments, and functions can return functions, the latter often by partial application of [[currying|curried]] functions. Functions are called by value. Its semantics include immutable values, [[pure function|stateless functions]], and static typing with type inference. Elm programs render HTML through a virtual DOM, and may interoperate with other code by using "JavaScript as a service".
 
=== Immutability ===