While itself I tend to agree, the typical scenarios for average programmers are one-off tasks or fairly trivial, aka &quot;fetch stuff from here, apply some code, store some results there, and maybe run this stuff every X&quot;. In these cases, correctness&#x2F;absence of bugs are not that important, but the job should be done ASAP. In situations like this, I vastly prefer <i>impure</i> FP languages, like Elixir. Just get shit done (eg.: the File module is great!).<p>On the other hand, when I build more complicated (web) systems, using a framework like Phoenix, <i>everything</i> is pure, <i>except</i> controllers or custom API clients, these are the single point of interacting with impure stuff and can be guarded easily, even dying is acceptable mostly.<p>The point I&#x27;m trying to make is: Monads and complex&#x2F;strange type systems are completely unsuited for usage through the average joe programmer, no matter how much I agree with the topic itself. But there are solutions available that allow to reap <i>most</i> benefits of pure FP while also allowing to be pragmatic when appropriate. I mention Elixir here because it is the single best language that fits in this description I think.