These are valid points points Rex,
However, I wrote this post from a Scala user perspective, not a Scala language or Scala library designer one. Naturally, the latter two groups have more influence in the decision making process, and judge proposals on feasibility and complexity of implementation. But the Scala users are the larger group, a mostly silent majority if you will, certainly in these channels, but are in the end the reason for which this whole project exist, set aside research.
Now, from this point of view, let me address your concerns.
1) “It introduces a syntactic ambiguity where there was none.”
True, but a solution path was also presented in the SIP. Personally i would opt for a compiler flag. First something like “-withSIP12” so that old style is default and with the flag the new syntax is accepted (and the old refused) and in the next version “-withoutSIP12” so that new style is default and with the flag old style is accepted (and the new refused).
2) “It either requires lots of busywork change ...”
With the solution above, you do not need to accept different ways in the same codebase. As a developer, not just Scala, but also C++ (mostly for computational physics), C (for embedded systems) and Javascript and Dart (for front ends). I wrote approx 20.000 lines of Scala code in three separate projects this year. Changing that to a new syntax indeed is work, but this should not be exaggerated. With some tooling, this can be done in a day or two. And for code that is “finished” and needs recompiling the compiler switch can be used. I would rather have that, than a language where the syntax cannot be improved anymore, just because some small but loud voiced group of people is whining about the work that needs to be done.
3) “It pulls the if-construct even farther away ...”
As said, i am no language designer, so i do not understand the full impact of this problem, but your solution seems very clever. Certainly you are not saying that an opinion about a SIP only has value if the poster can solve all the problems that arise? When something is impossible, that is an other matter of course. But as fas as i can see the committee has enough brainpower to crack this nut.
Let me conclude with the following. Please remember that a small language like Scala (position 33 on Tiobe) needs vision to become large, not consensus. Focus on the strong parts and amplify them. The rest (such as keeping everybody satisfied) is of lesser importance. Recently i got an e-mail from Heinz Nabielek, and want to relay quote: “I was a little involved in creating a programming language "ADA" in the eighties. Because it was a programming language created by a committee, it was a huge failure.....”.
Formulated differently: Prof. Odersky certainly had vision when he creating Scala, and he is as modest as visionary. So you need damn good reasons to put aside his proposals, and the fact that he can veto them (which he could not this time by the way) is not one of them.
I wish you and the committee much wisdom in the upcoming meetings.
Ruud Vlaming.
Op zondag 16 oktober 2016 22:14:52 UTC+2 schreef Rex Kerr: