Elm (programming language): Difference between revisions

Content deleted Content added
MiniBill (talk | contribs)
No edit summary
MiniBill (talk | contribs)
Elm is also available on Linux and Arm
Tags: Mobile edit Mobile web edit
 
(2 intermediate revisions by 2 users 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
| website = {{Official URL}}
| influenced by = [[Haskell]], [[Standard ML]], [[OCaml]], [[F Sharp (programming language)|F#]]
| influenced = [[Redux (JavaScript library)|Redux]],<ref>{{cite web |url=https://redux.js.org/introduction/prior-art |title=Prior Art - Redux |website=redux.js.org|date=28 April 2024 }}</ref> [[Rust (programming language)|Rust]],<ref>{{Cite web |title=UniquenessShapes Typesof errors to come|url=https://blog.rust-lang.org/2016/08/10/Shape-of-errors-to-come.html |access-date=2016-10-08 |website= Rust Blog |quote=Those of you familiar with the Elm style may recognize that the updated --explain messages draw heavy inspiration from the Elm approach.}}</ref> [[Vue.js#Official libraries|Vue]],<ref>{{cite web |url=https://vuejs.org/v2/guide/comparison.html#Scale |title=Comparison with Other Frameworks — Vue.js}}</ref> Roc,<ref>{{Cite web |title=roc/roc-for-elm-programmers.md at main · roc-lang/roc |url=https://github.com/roc-lang/roc/blob/b8040bf6a224cc82a0d146a960c3f8dfca20d58b/roc-for-elm-programmers.md |access-date=2024-02-17 |website=[[GitHub]] |language=en |quote=Roc is a direct descendant of the Elm programming language. The two languages are similar, but not the same!}}</ref> Derw,<ref>{{cite web |title=Why Derw: an Elm-like language that compiles to TypeScript? |date= 20 December 2021|url= https://derw.substack.com/p/why-derw-an-elm-like-language-that}}</ref> Gren<ref>{{cite web |title=Gren 0.1.0 is released |url= https://gren-lang.org/news/220530_first_release/}}</ref>
}}
 
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 ===