1. 10

  2. 2

    Over the years, there have been a number of these “warts of Scala, problems with Scala, look at how bad Scala is”. I think it is really healthly to have these debates, and it is a sign of a language that people care about. Just to be clear, I am *not” attacking Haoyi in any way.

    Does this happen to the same extent in other programming communities/languages?

    If not, what makes Scala special in this regard? Is it where the language comes from (EPFL/Martin Odersky), what Scala is trying to do (OO / functional hybrid), or just the people that are in the community?

    1. 3

      We occassionally have threads like this on Haskell Reddit:


      1. 3

        As someone who has worked with Scala for the past 5 or 6 years, I’ll say that Scala is just poorly designed.

        • It has a lot features but there’s no check to ensure that they work correctly together
        • Instead of keeping Java compatibility in a useful way, Scala instead consumes all of Java’s problems
        • Syntactic sugar which doesn’t desugar how you expect because of irregularity (e.g. for-comprehension and withFilter)
        • Slow monadic code due to having to trampoline in a lot of cases
        • Implicits
        • CanBuildFrom
        1. 3

          What’s wrong with implicits, or CanBuildFrom, assuming you’re not referring to the silly signature it gives to functions like map?

          (edit: these are not naïve questions, I’m well aware of their design reasons and know they can be problematic, but I don’t consider them as warts)

          1. 2

            Not OP, but the issue with CanBuildFrom (and similar “magic cookies” like ExecutionContext) is that they not only force implementations of the collections API into one specific approach, but also conflate the data you put in, the transformations you intend to run and how these operations are executed.

            That’s why Scala’s collections will never be remotely efficient – CanBuildFrom prescribes that all implementations are supposed to do completely pointless work.

            That design approach is also the main reason of the bizarre proliferation of almost identical, but incompatible APIs in Scala.

          2. 1

            Yeah it’s much more obviously painful when you’ve tried other ML languages, even F# which honestly drinks from a sicker pond.

          3. 1

            Popularity? Scala is probably the most popular[1] advanced language. Haskell has these debates too, but it’s not as popular, so they’re not as visible outside the community.

            Such discourse is absolutely necessary for the advancement of the language, but to those not familiar to the language or the discourse, this discourse gives the impression that everything sucks and things are hopeless. But in reality, for both Scala and Haskell, things are looking up.

            [1] speculation based on stackoverflow careers job postings + TIOBE + github