Project Elvis

Steven Schveighoffer schveiguy at yahoo.com
Mon Oct 30 13:34:07 UTC 2017


On 10/30/17 7:32 AM, Dejan Lekic wrote:
> On Saturday, 28 October 2017 at 11:38:52 UTC, 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
> 
> Is it going to be something similar (or the same) as in Kotlin? 
> (Reference: 
> https://kotlinlang.org/docs/reference/null-safety.html#elvis-operator )
> 
> I see from comments that different people think of it in a different 
> way. I suggest them to read this section from Kotlin docs to understand 
> the reasoning behind the elvis operator.

 From looking quickly at that, but not having any experience with Kotlin 
(but having some experience with Swift), I think this really requires a 
concept of Nullable types being a builtin feature. The idea is to have 
something that always results in a non-null value.

Swift uses the operator ?? to do the same thing (search for ?? on this 
page: 
https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/BasicOperators.html)

I think D has the capability of doing the same thing, even with Nullable 
being a library type, but would have to be pervasive in usage to look 
like Kotlin. At least the operator itself fits into the usage of Null or 
not types. Of course, the D version is much more adaptable, as any 
concept of "Null" or "Invalid" can be ascribed to a type via the 
opCast(bool) function.

-Steve


More information about the Digitalmars-d mailing list