Regarding Nullables

Dmitry Olshansky via Digitalmars-d digitalmars-d at puremagic.com
Sun Sep 14 13:10:21 PDT 2014


13-Sep-2014 23:39, Andrei Alexandrescu пишет:
> On 9/13/14, 8:36 AM, bearophile wrote:
>> This is a little Haskell program that uses the Maybe type constructor:
> [snip]
>
> As others noted, I think we need a kind of range with either zero or one
> element. Also, the range would have an "exception" property that returns
> null if the operation was successful (and the element is there) or
> whatever exception produced the result. E.g.:
>
I think it may be a bit too much to mix "exception or ok" and "1 or 
none" into a single type. Otherwise I agree.

For precedents e.g. Scala has Option!T (or rather Option[T]) and Try[T] 
to denote Some!T or None, and Success!T or Failure(Throwable) 
respectively. And then uses composition to cover all of potential 
combinations.


> MaybeRange fun() { ... }
> ...
> auto r = fun;
> if (r.empty)
> {
>      assert(r.exception);
>      ... error case ...
> }
> else
> {
>      ... use r.front ...
>      r.popFront;
>      assert(r.empty); // just one element
> }
>
>
> Andrei


-- 
Dmitry Olshansky


More information about the Digitalmars-d mailing list