c# - Nullable<T> monad 上的绑定(bind)和标识函数在哪里?

标签 c# functional-programming programming-languages monads category-theory

我对单子(monad)的理解仍在形成中。据我所知,除了关联之外,单子(monad)必须遵守的其他三个契约是 identity , purebind .

我推断 Nullable<T> 的构造函数形成纯函数,我没有看到任何 identitybind功能于 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>BNullable<T2> 类型的属性,然后a?.B相当于 Bind(a, x => x.B) .

关于c# - Nullable<T> monad 上的绑定(bind)和标识函数在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38414752/

相关文章:

programming-languages - 面向方面编程的弱点?

oop - 什么是方法调度?

language-agnostic - 一种语言可以图灵完整但在其他方面不完整吗?

c# - Javascript SPA,使用 Hello.js 社交登录对用户进行身份验证,并从 ASPNET5 C# WebApi 后端验证 token

c# - WPF 中的数据绑定(bind)?

c# - AJAX 请求后的 JavaScript

oop - 函数式编程语言和命令式编程语言有什么区别?

scala - 纯度,参照透明性和状态单价

c# - 在 C# 中比较多组数据重叠的最有效方法是什么

oop - 如何在函数式编程中建模继承关系