F# 什么是';还有';在带有FsToolkit.ErrorHandling的验证计算表达式中,在F中#
使用FsToolkit.ErrorHandling并查看此示例时:F# 什么是';还有';在带有FsToolkit.ErrorHandling的验证计算表达式中,在F中#,f#,computation-expression,F#,Computation Expression,使用FsToolkit.ErrorHandling并查看此示例时: testCase "Happy Path Result" <| fun () -> let actual : Validation<int, string> = validation { let! a = Ok 3 and! b = Ok 2 and! c = Ok 1 re
testCase "Happy Path Result" <| fun () ->
let actual : Validation<int, string> = validation {
let! a = Ok 3
and! b = Ok 2
and! c = Ok 1
return a + b - c
}
testCase“快乐路径结果”
让实际值:验证=验证{
让我们来看看!a=Ok 3
和!b=Ok 2
和!c=Ok 1
返回a+b-c
}
和的意思是什么!?看起来像是让我走了!映射到Result.bind,但我看不到let之间有任何不同的行为!还有
就我所见,它看起来像是在更换和更换!用let!保持同样的行为
我刚刚开始涉足计算表达式,事情开始变得有意义了,尽管我真的不明白为什么我们在F#关键字(如let)和实际函数(如bind)之间有不同的命名法,所以这增加了一层混乱。因此,答案可能很明显:)这是F#5.0中引入的对的新支持
let之间的区别代码>和和代码>那是让我来代码>允许值取决于先前的结果,而和代码>没有。这对于您的计算是一个单子,但不是一个完整的单子,或者您希望并行执行计算中的独立步骤的情况非常有用
例如,使用let代码>您可以编写以下代码:
let! a = Ok 3
let! b = Ok (2 * a) // Allowed: value of b depends on a
let! a = Ok 3
and! b = Ok (2 * a) // Not allowed: value of b depends on a
但你不能这样写:
let! a = Ok 3
let! b = Ok (2 * a) // Allowed: value of b depends on a
let! a = Ok 3
and! b = Ok (2 * a) // Not allowed: value of b depends on a