After some time you start wondering why you have to type `List.map` and `Maybe.map` and `Set.map` when they all do the same thing. Then you'll be ready for some Haskell :)
Elm was a great Trojan horse. It limited feature set made it quick to learn and get familiar with the syntax.
When sufficiently proficient in Elm you then find yourself missing some of the features of Haskell i.e. higher kinder types. At that stage Purescript / Haskell is a natural transition as they feel familiar but with more functionality.
I know that Elm works great for front end but how is it for desktop and backend stuff?
It isn't. It's explicitly designed as a purely web front-end language, that's its scope.
Of course, many Elm users like to run another ML-family language in the backend as well. Haskell's Servant backend library, the one used in this article, has a project to automatically generate Elm client code [1]. Elixir is popular as well.
But in general, I'd say that any backend framework that can provide an OpenAPI spec will work well, as you'll be able to auto-generate most if not all of the Elm client code (which is normally dull work and one of the main complaints about Elm).
> in terms of learning materials there isn't much compared to haskell.
To whet your apetite, see https://elm-lang.org/
Then read through the excellent https://guide.elm-lang.org/ - not very long but absolutely enough to hit the ground running.