@shapr I don't actually have that much experience with either, but the little I have had has been mostly positive actually. I think the reason for this is that I haven't simply used them enough to discover in what ways they are bad.
Note, however, that my positive impression of Haskell is on the theoretical level. I find the idea of doubling down on the pure-ness of a functional language to be interesting in the same way I find Unlambda very interesing. It's a great way to understand the ideas behind functional programming.
As a practical language however, I'm not so rigid in my views on functional programming that I'm not willing to sacrifice some mutability here and there in order to be able to write real code.
And yes, I believe monads are, despite their solid theoretical underpinnings, just a hack. It's similar to my idea that I can make C into a pure functional language as long as I pass a state object to every function call (where the state object represents the state of the entire memory of the machine).
On the language side, it has the usual problems of a quick hack that has evolved new features to compensate for core features that were not very well thought through. At its core, is a fundamentally functional language that implements things like closures mostly right (let's ignore the bad scoping of variables for now). That's at least something it managed better than Python. This is not surprising given that the language was originally Scheme, but was given a new syntax similar to Java in order to ride on Java's popularity at the time.
All of these things put together gave birth to Electron. It's what you get when you have layers of badness, and large groups of developers who know nothing else, building desktop applications in the only way they know.
Using different languages for describing, theming, and coding the logic of a UI is somewhat better than mixing everything into a single language. Reusing the rendering engine of a web browser to draw the UI is not a bad idea.
Using node.js as the backend is more questionnable though, as you could have achieved something similar by extending or changing the web browser bindings for local pages.