Created in 2012, Elm is a domain-specific, statically typed, functional programming language made for creating safe front-end web applications.
The designer, Evan Czaplicki, wrote a thesis about functional reactive programming, and created the language to implement the ideas in his thesis. Recognizing potential in his language, which was then very basic, he joined Prezi, a presentation software company, to work on Elm in 2013, moving to NoRedInk in 2016, when he founded the Elm Software Foundation.
Based on Haskell, Elm has the capability of compiling down to minimal JavaScript for easy deployment of applications on the web. While developing front-end JavaScript, sometimes errors will appear in the code and go unnoticed. Later, the accumulation of these errors can break the code at runtime. The use of Elm makes it impossible to introduce errors into the code, as they will be caught at the time of compilation.
Czaplicki has since changed the architecture of the language to make it easier to use and to further emphasize concurrency. The set of core tools for the language has continued to expand, and now includes a REPL, a package manager, time-traveling debugger, and installers for macOS and Windows platforms. Elm also has an advanced online editor that allows for saved work and the inclusion of community libraries.
Elm is a good language for web applications that interact with users. These may include games, single-page applications, and graphics. Elms may also be embedded into JavaScript, then imported into an HTML file.
Among its attributes are a fast virtual document object model (DOM), friendly compile-time errors, zero runtime exceptions, constraints as guarantees, piped syntax, easy refactoring, increased productivity, a helpful type system, and a time-traveling debugger.
Elm uses an abstraction called ports to communicate with JavaScript. It allows values to flow in and out of Elm programs, making it possible communication between Elm and JavaScript possible. It also includes a library called ELM/HTML that a programmer can use to write HTML and CSS within Elm, using a virtual DOM approach to make the updates efficient.
Third-party libraries (packages) are available from the Elm Public Library.
Topics related to the Elm programming language are the focus of resources listed in this category. Also appropriate here are any third-party compilers, libraries, editors, or other tools designed for use with the language, as well as tutorials, user groups, forums, or other sites associated with Elm.
 
 
Recommended Resources
Written by Pawan Poudel, a long-time programmer, the online book is sorted into sections, chapters, and sub-chapters, each chapter after the introduction ending with a conclusion. Sections include the Introduction, Syntax & Semantics, and Architecture. The book assumes a basic understanding of programming, but no prior knowledge of Elm or functional programming is a prerequisite. Even those who have dabbled in a programming language should be able to learn Elm through this book.
https://elmprogramming.com/
The site highlights web applications build with the Elm programming language, featuring a 1000-pixel by 800-pixel screenshot for each, along with a link to where each site can be found online. Maintained by Luke Westby and the Elm community, new sites may be submitted for inclusion, and pull requests can be made. By default, the most recently listed examples are listed first, continuing in reverse chronological order. Older sites are available on subsequent pages.
http://builtwithelm.co/
Christian Charukiewicz is a technology leader, teacher, and software engineer, and chief technology officer at Roompact, a software-as-service company. On his site, he advocates for the use of functional programming for building real-world software systems, including the Haskell and Elm programming languages. Several articles on various topics related to programming languages, software, and technology “Elm in Production: 25,000 Lines Later,” published on July 30, 2017.
https://charukiewi.cz/posts/elm/
Maintained by the unofficial Elm developer community on GitHub, the site includes the Elm Community Manifesto, which presents a description of what the organization is about, as well as a list of its Elm file repositories, and an issue tracker, which reports on general issues about the organization, including projects. Links to informational sites developed by the group are listed, along with other sites related to the Elm programming language, but not to the group.
http://elm-community.org/
Promising no runtime exceptions, great performance, enforced semantic versioning, small assets, and JavaScript interoperability, the programming language is highlighted here, including links to where it can be obtained, and a tutorial on programming with Elm. News about the Elm compiler and core libraries is given, along with announcements and version releases. Links to other sites focused on the language are given, the core development team is introduced, and documentation is available.
https://elm-lang.org/
The ESF is a non-profit organization, established in 2016, and funded by individual and corporate sponsors, managed by volunteers serving as directors and officers, and charged with promoting, protecting, and advancing the Elm programming language, as well as the international community of Elm programmers. Its directors and officers are acknowledged, and its articles of incorporation and other documents are available for perusal. Events are announced.
http://foundation.elm-lang.org/
Hosted by Kevin Yank, Elm Town is an ongoing podcast about the people making and using the Elm programming language, as well as the things that they do. For each episode, the hosts, and any guests are introduced, along with the acknowledgment of others involved in the production, show notes, sponsors, and topics. Discounts on Elm-related tools may be included. Episodes are sorted in reverse chronological order, with the most recent podcast listed first.
https://elmtown.simplecast.fm/
Written by Jeremy Fairbank, Programming Elm was written with front-end developers new to the Elm programming language in mind. Beginning with the basics, such as syntax and creating functions, the instructional book takes programmers up to building a single-page application. Available from several retailers, the book’s first five chapters focus on building applications, and the next six chapters cover advanced patterns for scaling, debugging, integrating, and maintaining Elm applications.
https://programming-elm.com/