Elm (programming language): Difference between revisions

Content deleted Content added
Removed flag on example code. (Justification see Talk.)
Citation bot (talk | contribs)
Add: title, date. Changed bare reference to CS1/2. | Use this bot. Report bugs. | Suggested by BrownHairedGirl | Linked from User:BrownHairedGirl/Articles_with_bare_links | #UCB_webform_linked 1983/2198
Line 5:
| logo = [[File:Elm logo.svg|120px|The Elm tangram]]
| paradigm = [[Functional programming|Functional]]
| released = {{Start date and age|2012|3|30}}<ref name="initialrelease">{{cite web|url=https://www.reddit.com/r/haskell/comments/rkyoa/my_thesis_is_finally_complete_elm_concurrent_frp/|last1=Czaplicki|first1=Evan|title=My Thesis is Finally Complete! "Elm: Concurrent FRP for functional GUIs"|website=Reddit|date=30 March 2012}}</ref>
| latest release version = 0.19.1
| latest release date = {{Start date and age|2019|10|21}}<ref>{{Cite web|url=https://github.com/elm/compiler/releases|title = Releases · elm/Compiler}}</ref>
| influenced_by = [[Haskell (programming language)|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}}</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>
Line 13:
| designer = Evan Czaplicki
| website = {{Official URL}}
| 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 22:
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=2019-07-24|archive-url=https://web.archive.org/web/20170521144831/http://elm-lang.org/try|archive-date=2017-05-21|url-status=dead}}</ref> Evan 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 [[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 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 [https://package.elm-lang.org/packages/ community created libraries] and [https://ellie-app.com Ellie], an advanced online editor that allows saved work and inclusion of community libraries.
 
== Features ==
Line 51:
=== Backend ===
 
Elm does not officially support server-side development. The core development team does not consider it as their primary goal and prefers to focus development on the enhancement of front-end development experience. Nevertheless, there are several independent projects, which attempt to explore possibilities to use Elm for the back-end. The projects are mainly stuck on Elm version 0.18.0 since newer ones do not support "native" code and some other utilized features. There are two attempts to use Elm with BEAM (Erlang virtual machine). One of the projects executes Elm directly on the environment<ref>{{Cite web|url=https://github.com/hkgumbs/elm-beam|title = Kofigumbs/Elm-beam|date = 24 September 2021}}</ref> while another one compiles it to Elixir.<ref>{{Cite web|url=https://github.com/wende/elchemy|title = What is it?|date = 24 September 2021}}</ref> Also, there was an attempt to create a back-end framework for Elm powered by Node.js infrastructure.<ref>{{Cite web|url=https://github.com/AIRTucha/board|title=Board|date=18 September 2021}}</ref> None of the projects are production-ready.
 
== The Elm Architecture ==