Regarding Nullables

bearophile via Digitalmars-d digitalmars-d at puremagic.com
Sat Sep 13 08:36:28 PDT 2014


This is a little Haskell program that uses the Maybe type 
constructor:


foo :: Int -> Maybe Int
foo x | x < 10 = Just x
foo _          = Nothing

main = do
     print $ foo 5
     print $ foo 15


Its output:

Just 5
Nothing




This is a similar D program, that uses Nullable:

import std.stdio, std.typecons;

Nullable!int foo(int x) {
     return (x < 10) ?
            typeof(return)(x) :
            typeof(return)();
}

void main() {
     writeln(foo(5));
     writeln(foo(15));
}


Its output:

5
core.exception.AssertError at C:\dmd2\src\phobos\std\typecons.d(1515): 
Called `get' on null Nullable!int.
...


I think it's better for write(Nullable!int()) to not raise an 
error, but to print something like a "<null>" etc.

A bigger problem is in the usage of Nullable. I'd like the D type 
system to be modified and improved to support Nullables with a 
nicer syntax.

Bye,
bearophile


More information about the Digitalmars-d mailing list