Nullable <t> monad上绑定和标识函数在哪里?

时间:2016-07-16 19:21:11

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

我对monad的理解仍在形成。我理解除了关联之外,monad必须遵守的其他三个合同是runAction(SKAction.repeatActionForever( SKAction.sequence([ SKAction.runBlock(addGhost), SKAction.waitForDuration(1.0) ]) )) identitypure

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

1 个答案:

答案 0 :(得分:3)

.Net不包含bind的{​​{1}}方法,但它足以让您自己构建一个:

Nullable<T>

C#确实包含与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; } 类似的东西(但不太通用):空条件运算符bind。假设?.类型为aNullable<T1>属于B类型的属性,则Nullable<T2>相当于a?.B