&gt; I&#x27;ve heard this argument many times and it all boils down to &quot;Scala is not Haskell&quot;, which is in fact a true statement. Scala is not Haskell and never meant to be a Haskell replacement, nor a pure FP non-strict language.<p>Yes, but my point is that Scala&#x27;s unholy combination of OOP&#x2F;FP has been <i>marketed</i> as some sort of panacea... which it definitely isn&#x27;t. I think, it&#x27;s actually worse in both aspects: Erlang (modulo static type checking) beats it in the OOP realm, and Haskell (and Idris, etc.) beat it in the functional.<p>Try to use scalaz for anything serious, and I think you&#x27;ll find out what I mean. Don&#x27;t get me wrong, scalaz (and shapeles, etc.) are marvels of engineering, but they aren&#x27;t sufficient in practice. Nor are they for any reasonable definition of the term &#x27;usable&#x27;. Haskell&#x2F;GHC is -- and in fact it&#x27;s simple and easy.<p>Btw, now we can also enjoy &#x27;cats&#x27;! Let&#x27;s retread the whole &quot;mtl&quot; and &quot;transformers&quot; disaster once again in Scala! Fun! (I was around for the Haskell mtl&#x2F;transformers&#x2F;fundeps thing and... it didn&#x27;t work. Monad &amp;c. need to be part of standard library. For sanity.)<p>I just think programming languages is a realm where compromise doesn&#x27;t work. Maybe I&#x27;m wrong, but...<p>&gt; Anyway, Scala is probably one of very few languages that combines OOP and FP<p>Firstly, &quot;Combine A+B does not necessarily improve anything&quot;[1], but...<p>Secondly, see, this is the problem... having a few things signify &quot;this cannot be mutated&quot; does not an FP language make. It&#x27;s far more complicated than that -- it&#x27;s about <i>culture</i>. The Scheme authors recognized this and named anything that was &quot;dangerous&quot; (side-effecting) with a bang at the end so that it would be offsensive and stand out to any code reviewer. This is what FP is all about... not just paying lip service (which I think Scala is doing <i>currently</i>) to immutability.<p>EDIT: Look, I realize that I&#x27;m being an asshole with the beneift of hindsight, but still... I&#x27;m talking about what we should <i>aspire to</i>. Not just accept.<p>[1] I think the supreme example of this is in the O&#x27;Caml object system. It&#x27;s basically better than any single-dispatch system out there, but nobody[2] actually _uses_ it. Why? Because it&#x27;s just simpler to do in function style.<p>[2] Yeah, yeah, qualifiers, formal studies, etc.