https://en.wikipedia.org/wiki/Persistent_data_structure
are miraculous. The merits of so-called "functional" programming languages for applications work are hard to separate from the merits of the ecosystem they are embedded in (e.g. is the urlenecode() function correct?) but frequently you hear the engineering manager says something like "we are programming in Scala so we can do error handling with monads and it will be so much better than using exceptions", then when you look at the code you see that nobody is checking for errors and then ask "doesn't the engineering manager say that we do code reviews?"
That is, for a lot of people talking about functional programming seems to be a substitute for doing the job right.
I’m happier working with Elm on the front end that I am with Typescript on the backend though.