News for hackers. Stuff that matters.
Re:Towards Scala 3 by realusername on Friday April 20, 2018 @09:44AM (#16884672)
I would start with operators and operator overrides, most of the time they don't make sense and it's difficult to know what it does, that's why most other languages banned them.

Secondly, the implicit concept makes the code difficult to read. Then I would add that the differentiation between function & variable isn't always clear and sometimes you don't know what you call.

Re:Towards Scala 3 by lmm on Friday April 20, 2018 @10:18AM (#16884939)
> I would start with operators and operator overrides, most of the time they don't make sense and it's difficult to know what it does, that's why most other languages banned them.

Yeah, that's what I was talking about - in Scala operators are just functions, and badly named operators are an issue with some libraries rather than an issue with the language. They're unfortunate, but all one can really do is avoid them - no language is impossible to write bad libraries in. Certainly I wouldn't ever want to go back to a language that uses magically-named methods for operator overloading, like Python and Kotlin do - I find that far more confusing, I can never remember whether a * b is calling a.__times__(b) or a.__star__(b) or something else. I could get behind a language that disallowed symbolic names entirely, but I don't think I've seen one of those since Java.

> Secondly, the implicit concept makes the code difficult to read.

IDE support has gotten a lot better now (green underline to highlight any implicit conversion, expand out implicit parameters) which makes them much easier to work with. If you only use implicits in cases where you otherwise wouldn't do anything in code at all, they enhance readability - but of course if you use them to replace things that you'd otherwise make explicit then they can reduce readability. I don't have a good answer, because I definitely want extension methods, typeclasses with derivation, and the magnet pattern, but I haven't yet seen a language design that makes those things possible while disallowing the bad uses of implicits.

Re:Towards Scala 3 by dionian on Saturday April 21, 2018 @11:10AM (#16891694)
most of these criticisms I agree with but I don't blame scala as a language for it. I write, and encourage my colleagues to write, code that is very easy to follow and reckon about. Few obscure operators, almost zero implicits....
Re:Towards Scala 3 by coryfklein on Friday April 20, 2018 @10:56AM (#16885265)
What IDEs support this behavior?
Re:Towards Scala 3 by lmm on Friday April 20, 2018 @11:15AM (#16885436)
Both eclipse and intellij will underline implicit conversions. Showing implicit parameters might be intellij-only.
Re:Towards Scala 3 by yawaramin on Friday April 20, 2018 @11:04PM (#16889784)
Emacs + ENSIME also underlines implicit conversions.
Re:Towards Scala 3 by Cyph0n on Friday April 20, 2018 @10:58AM (#16885282)
Most uses of operator overrides in the Scala standard library make complete sense.

Want to add a value to a (mutable) Seq? Use +=.

Want to add a value and return a new Vector? Use +.

Want to build a new list that is the concatenation of two Lists? Use ++.

sbt is probably where you encountered "weird" operators, but their use has declined over the past few years from what I've seen.