On Monday, 6 November 2017 at 19:13:59 UTC, Adam Wilson wrote:
On 10/28/17 04:38, Andrei Alexandrescu wrote:
Walter and I decided to kick-off project Elvis for adding the
homonym
operator to D.
Razvan Nitu has already done a good part of the work:
https://github.com/dlang/dmd/pull/7242
https://github.com/dlang/dlang.org/pull/1917
https://github.com/dlang/dlang.org/pull/1918
Some years later the C# team introduces the Null-Conditional
operator: ?. which allows you to write: obj1?.obj2?.prop3 ??
constant.
NOW people start using Null Coalescing all over the place.
So C# embraced the Null. Everything is nullable and you are
expected to ?. proof it if you don’t know in advance.
In contrast other languages (e.g. Scala) decided to discourage
the use of null in favor of algebraic type Option!T and even
remove the null all together.
I am all for the Elvis operator, however I have two
reservations about it.
To me the biggest reservation is “embracing the null” that this
entails.
In other words since we dedicate a feature to support nulls that
indicates null return is an endorsed aproach to e.g. model APIs
and libraries that deal with optional values.
I’d argue this NOT what we want. Nullability is best captured in
the typesystem even if in the form of Nullable!T.