Nullable monad 上的绑定和标识函数在哪里

本文关键字:绑定 标识 函数 在哪里 monad Nullable | 更新日期: 2023-09-27 17:57:10

我对monads的理解仍在形成中。我知道,除了具有关联性之外,Monad必须遵守的其他三个合同是identitypurebind

我推断Nullable<T>的构造函数形成了纯函数,我在Nullable<T>上没有看到任何identitybind函数。

Nullable<T> monad 上的绑定和标识函数在哪里

.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)