for&#x2F;yield is fine. Haskell people love to get excited about the one extra flatten but it&#x27;s really not a big deal.<p>Side effects in Scala are a little less obvious than unsafePerformIO calls, but not by much. One little unmanaged println isn&#x27;t going to destroy the universe. The fact that Haskell will invisibly transform your code into lazy thunks, radically altering its performance characteristics, causes a lot more trouble IME.<p>Stack overflow problems are real, but you can get a lot of value out of the monad functionality without hitting them, particularly these days with a lot of effects being implemented as Free monad + interpreter. I wonder if Scala.js avoids the issue?<p>I&#x27;d probably switch to Ceylon or Idris if either had the ecosystem to match Scala. But for the time being they don&#x27;t.