Agreed, you should be cautious of using it for a complete system. That is probably going to “over complicate” your application and have you think about things that should not be relevant.
I think one of the challenges in a traditional language is that you soon end up with a bunch of framework-ish code. Written by yourself or even worse a 3rd party. A framework that is probably not going to be a very good fit in the long run.
Using a functional language you don’t need to create this framework for it. You need things like functions, pattern matching, left fold and that’s already build-in. Process managers, actors, supervision, it is already there!
Hey, Greg Young isn’t wearing an Erlang T-shirt for nothing right?