我认为我对 F# monad(工作流程)已经有了足够的了解,我在代码中发现了一些实现它们有意义的地方。
例如,我有一个具有多个嵌套 if/then 的函数,即只有当数据一路通过某些“测试”时,该函数才应该继续。
我熟悉“也许”单子,但在我见过的所有示例中,它被编码为操作let!
绑定,我没有这样做。我希望有人能为我提供一个为嵌套布尔测试量身定制的“也许”工作流程的示例,而不是let
binds.
您无需定义新的 monad 即可完成此任务。只需定义
let test b = if b then Some () else None
您现在可以使用它maybe
:
maybe {
do! test (1 > 0)
printfn "1"
do! test (2 > 3)
printfn "2"
return ()
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)