Adding the ?. null verification
Timon Gehr via Digitalmars-d
digitalmars-d at puremagic.com
Thu Jun 19 01:35:59 PDT 2014
On 06/18/2014 09:36 PM, H. S. Teoh via Digitalmars-d wrote:
> Here's a first stab at a library solution:
>
> /**
> * Simple-minded implementation of a Maybe monad.
> *
Nitpick: Please do not call it a 'Maybe monad'.
It is not a monad: It's neither a functor not does it have a μ operator.
(This could be fixed though.) Furthermore, opDispatch does not behave
analogously to a (restricted) monadic bind operator:
class C{ auto foo=maybe(C.init); }
void main(){
import std.stdio;
C c=new C;
writeln(maybe(c).foo); // Maybe(Maybe(null))
}
The result should be Maybe(null), if the data type was to remotely
resemble a monad.
Furthermore, 'Maybe' is a more natural name for a type constructor that
adds an additional element to another type, and 'Maybe monad' in
particular is a term that already refers to this different meaning even
more strongly in other communities.
More information about the Digitalmars-d
mailing list