I agree, allowing a nullable wrapper around a (already inherently nullable) reference type would be a horrible misfeature. What language was that?
No More:
Check.IsNotNull(objRef, "stop being a muppet");It is a fantastic tool in many cases where a null is much clearer than something like -1 to denote a missing value.
However, I can see the issue with some developers using nullable types for everything. But any sufficiently powerful/flexible tool is always going to be misused by some.
(I have a the same opinion about goto and operator overloading; clearly the folks at Microsoft agree with me here.)
The only exception is Java, where everything is basically frozen after release and cannot ever be changed anymore.
Most of the time, targeting a newer version in Scala is just a recompilation away, like on .NET. So if you are good with .NET, you should be good with Scala, too.