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.


Reply via email to