试图将糊状的头缠在单子上并绑住
例如,仅以学习摘要为例,>
open FSharpPlus open FSharpPlus.Data let lowerBounds i = if i > 10 then Ok i else Error "i was <= 10" let upperBounds i = if i < 20 then Ok i else Error "i was >= 20" let even i = if i % 2 = 0 then Ok i else Error "i was uneven" let rebind validation x = x >>= validation |> Seq.singleton seq{10..20} |> Seq.map lowerBounds >>= rebind upperBounds >>= rebind even
[虽然执行此操作,但我不喜欢
rebind
函数,因为它不是通用的,并且与Seq.singleton
绑定在一起,更不用说我看不到如何使其指向自由(但这是次要的。 ...点)
现在,我知道我可以传递依赖项,或者完全重构事物并组成验证函数,但是我试图学习如何绑定到嵌套的monad。 (有点像递归>>=
中缀运算符??),感觉就像是更多的FPish方法?
正如您所看到的,我正在使用FSharpPlus,并且查看了monad transformer section,但即使是我应该查看的内容,我也不知道吗?
[试图将我的糊状头缠在单子上并绑住,以这个片段为例,纯粹是作为学习练习打开FSharpPlus打开FSharpPlus.Data让lowerBounds i =如果i> 10则...