我对monad的理解仍在形成。我理解除了关联之外,monad必须遵守的其他三个合同是runAction(SKAction.repeatActionForever(
SKAction.sequence([
SKAction.runBlock(addGhost),
SKAction.waitForDuration(1.0)
])
))
,identity
和pure
。
我推断bind
的构造函数构成了纯函数,我在Nullable<T>
上看不到任何identity
和bind
函数。
答案 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
。假设?.
类型为a
而Nullable<T1>
属于B
类型的属性,则Nullable<T2>
相当于a?.B
。