我对单子(monad)的理解仍在形成中。据我所知,除了关联之外,单子(monad)必须遵守的其他三个契约是 identity
, pure
和bind
.
我推断 Nullable<T>
的构造函数形成纯函数,我没有看到任何 identity
和bind
功能于 Nullable<T>
.
最佳答案
.Net 不包含 bind
方法Nullable<T>
,但它足以让您自己构建一个:
static Nullable<T2> Bind<T1, T2>(Nullable<T1> source, Func<T1, Nullable<T2>> f)
where T1 : struct where T2 : struct
{
return source.HasValue ? f(source.Value) : null;
}
C# 确实包含与 bind
类似(但不太通用)的内容:空条件运算符 ?.
。假设a
类型为Nullable<T1>
和B
是 Nullable<T2>
类型的属性,然后a?.B
相当于 Bind(a, x => x.B)
.
关于c# - Nullable<T> monad 上的绑定(bind)和标识函数在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38414752/