ELM – FUNctional language for frontend by Tomas Latal

May 26, 2023

Tomas Latal introduces Elm, a functional programming language for front-end development that compiles to JavaScript. Elm, created in 2012, is known for its simplicity, robustness, and strong type system, ensuring fewer errors and immutable data structures. Tomas plans to demonstrate creating a simple tic-tac-toe game in Elm. He also shares his experience of discovering Elm as an excellent starting point for functional programming due to its clean syntax and ease of use, even for those with a background in object-oriented languages. Elm’s innovative error messages, simple Dynamic model, and no runtime exceptions guarantee make it an attractive choice for beginners. He also discusses the benefits of Elm’s community and tooling, such as the UI package for functional alternatives to CSS and HTML layouts, and the confidence and ease of refactoring. Throughout the presentation, Tomas demonstrates creating functions, styling elements, and handling errors in Elm.

ELM – FUNctional language for frontend: A comprehensive overview

Thomas Latal, head of a service team at Scrive, took center stage to introduce Elm, a functional language tailored for frontend development. Let’s delve into the details of his insightful presentation.


Introduction to Elm

Thomas initiated his talk by shedding light on Elm, a functional language designed to compile seamlessly into JavaScript. Conceived by Evan Sabliki in 2012, Elm garnered acclaim for its simplicity and reliability. With a strong emphasis on static typing and immutable data structures, Elm minimizes errors and fosters code robustness. Thomas outlined Elm’s allure for frontend development, citing its compact size, rapid rendering capabilities, and elimination of unused code. Promising a practical demonstration, Thomas hinted at implementing a tic-tac-toe game using Elm during the session.


Embracing Functional Programming

Thomas shared his journey of transitioning to Elm from a background dominated by object-oriented languages like PHP, JavaScript, and TypeScript. They lauded Elm’s clean syntax, reminiscent of Haskell but devoid of complex constructs, as an ideal entry point into functional programming. The absence of intimidating concepts like type classes and operators streamlines the learning curve, enabling developers to focus on practical coding exercises. Elm’s emphasis on functional purity and strong typing instills confidence in building safer, more resilient applications.


Unique features and benefits

Thomas delved into Elm’s distinctive features tailored for beginners, including its intuitive error messages, which pinpoint code discrepancies with precision. Leveraging the Model-View-Update architecture, Elm facilitates the creation of interactive applications with ease. Notably, Elm’s stringent no-runtime-exceptions policy, underpinned by its robust type system and immutable data structures, ensures unparalleled stability and reliability.


Tooling and developer experience

Elm’s tooling prowess and semantic versioning mechanisms empower developers to refactor code confidently. With built-in review functionalities, Elm facilitates codebase cleanup by identifying and removing redundant code segments. Thomas lauded Elm’s UI library for frontend aesthetics, obviating the need for intricate CSS styling. The language’s clear compile messages and navigable codebase further enhance the developer experience.


Live demo and code walkthrough

Transitioning to a live demonstration, Thomas showcased Elm’s practical utility by creating a type for representing the inner state of an application. Despite encountering compiler errors initially, Thomas adeptly navigated through adjustments, eventually compiling the code. Demonstrating the usage of the UI package, Thomas simplified frontend development by centering elements and arranging them in rows or columns.


Code refinement and styling

Thomas elucidated the process of crafting a grid view function in Elm, emphasizing the functional programming paradigm of composing smaller functions. Leveraging Elm’s functional capabilities, Thomas iteratively refined the codebase, adding borders, spacing, and content alignment. Employing Elm’s Maybe type to handle uncertainty gracefully, Thomas ensured robust error handling and smoother application behavior.


Interactive features and community engagement

Thomas addressed the challenge of incorporating interactive features like a reset button into functional programming applications, emphasizing the need for comprehensive message handling. Encouraging audience engagement, Thomas advocated for exploring Elm’s official documentation, joining the Elm Slack community, and considering specialized Elm programming courses for further learning.


Community insights and future prospects

Fielding audience queries regarding Elm’s popularity and adoption, Thomas provided insights into the language’s ecosystem and community vibrancy. Despite external perceptions of Elm’s stagnation, Thomas affirmed its continued relevance and adoption by companies worldwide, citing ongoing innovations in server-side rendering, and GraphQL integration.



Thomas Latal’s deep dive into Elm offered attendees a comprehensive understanding of its principles, benefits, and practical applications. Elm’s fusion of functional purity, robust tooling, and seamless frontend development capabilities positions it as a formidable contender in the programming landscape, driving innovation and empowering developers worldwide.


Additional resources

Check out more from the MeetUp Func Prog Sweden. Func Prog Sweden is the community for anyone interested in functional programming. At the MeetUps the community explore different functional languages like Erlang, Elixir, Haskell, Scala, Clojure, OCaml, F# and more.