Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

One of my previous employers had an Elm frontend and a React frontend. Basically all development on the Elm side was slower. New hires generally had used React before in at least some capacity, but everyone had to learn Elm from scratch. When I left Elm was slowly being phased out but there were still a lot of Elm components left over.

For me, it felt like a heavier cognitive load to do anything with Elm since it was another abstraction level away from the DOM. The quote "I know this is possible in Javascript, but we chose Elm and it makes it very hard" from the "Why I'm leaving Elm" article (https://lukeplant.me.uk/blog/posts/why-im-leaving-elm/#techn...) is something I never said to my boss but still resonates strongly as how I often felt internally frustrated when trying to work with Elm. Some of this might have been because I was very familiar with JavaScript and less familiar with something like Haskell, but I think it's fair to say that most people working on the front end web are likely the same.

For example look at the "simple" counter example... there's a ton going on that doesn't seem intuitive, and even having used Elm professionally I double take looking at lines like "update : Msg -> Model -> Model" or "main = Browser.sandbox { init = init, update = update, view = view }": https://guide.elm-lang.org/architecture/buttons.html

The equivalent React simple counter example (https://reactjs.org/docs/hooks-intro.html) is much more understandable IMO/. Even if you haven't ever used React before, it looks much more like typical HTML and JavaScript. React has plenty of gotchas and is far from perfect, but in terms of getting junior web developers making their first pull requests in our codebases React took way less effort and learning.

Elm isn't dead, it has some dedicated FP fans as users and works fine. It is niche though, and I don't expect that to change.

--

As a side note, it always irked me to see the word "I" in either an Elm error message or the official documentation. In errors it felt overly friendly or personified rather than giving me straight technical info, and in documentation it felt concerning that a single person's opinion might have an overly strong influence and that person might not listen to the broader community on some key issue and prevent progress.



> The equivalent React simple counter example [...] is much more understandable IMO/.

Eh, I'm a backend dev, and it isn't more understandable for me. setCount is a constant yet we're calling it as a function? And what the hell is useState?

I've written a fair bit of Elm on some toy projects and enjoyed it.


In JS functions are first class citizens that can be saved to variables, passed as arguments or returned by other functions, etc.


More understandable if you already know Javascript of course. If you don't, of course you'd be confused why const is used (it's technically as if the constant were a pointer to a function, but in practice a function and a pointer to a function are one and the same in JS).

useState is one of those things that's a React specific concept, yes, but the rest of the code is very familiar to non-React frontend developers in general.




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: