I think the "tools in a toolbox" argument is a false compromise to be honest. There are very few cases where this is true, and it is almost always forced on the programmer by platform limitations (eg. Android, iPhone, Windows desktop, OSX desktop, embedded, etc.) and not by some property of the language itself. For everything else, I think an argument could be made that one language or paradigm is best. Referential transparency and encapsulated IO are useful properties to have whether I am writing a console application, describing digital logic circuits, or web services that perform CRUD operations on a database.