Nullable monad 上的绑定和标识函数在哪里
本文关键字:绑定 标识 函数 在哪里 monad Nullable | 更新日期: 2023-09-27 17:57:10
我对monads的理解仍在形成中。我知道,除了具有关联性之外,Monad必须遵守的其他三个合同是identity
,pure
和bind
。
我推断Nullable<T>
的构造函数形成了纯函数,我在Nullable<T>
上没有看到任何identity
和bind
函数。
.Net 不包含用于Nullable<T>
的bind
方法,但它足以让您自己构建一个:
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)
。