Option!T

Meta via Digitalmars-d digitalmars-d at puremagic.com
Tue Jul 1 07:28:08 PDT 2014


On Tuesday, 1 July 2014 at 11:37:15 UTC, Shammah Chancellor wrote:
> On 2013-12-10 17:28:26 +0000, Andrei Alexandrescu said:
>
>> I talked to a programmer who knows Scala (among others) and he 
>> mentioned the usefulness of the Option type - a zero or one 
>> element collection (range in D terminology). Here's an article 
>> discussing it: 
>> http://danielwestheide.com/blog/2012/12/19/the-neophytes-guide-to-scala-part-5-the-option-type.html
>> 
>> 
>> We have only(x) (http://dlang.org/phobos/std_range.html#.only) 
>> to be a collection of exactly one value, but not a type for "a 
>> value of type T or nothing at all". Should we follow Scala's 
>> example and add it?
>> 
>> 
>> Andrei
>
> Did anything ever come of this?  If there's nothing in Phobos 
> yet, I can start working on it and submit a PR.   If we can get 
> this formalized and into the good usage, it seems like we would 
> not need a .? operator.
>
> -Shammah

I have a simple implementation that I've been working on off and 
on. It's kind of neat representing it as a range as you get all 
the range algorithms for free. One problem I ran into is that my 
first instinct is to use std.algorithm.map as the monadic bind 
operation, but it produces an option wrapped in a MapResult, 
which is no good. You could just implement map as a member 
function of Option!T, but it's not transparent, and it's more 
difficult to make it lazy.


More information about the Digitalmars-d mailing list