无法定义计算表达式自定义 "condition" 运算符
Cannot define a computation expression custom "condition" operator
我很难在下面的代码中给出 condition
的定义。希望有一个例子和见解:
// a computation expression builder class
type Builder() =
.
.
.
[<CustomOperation( "condition",
MaintainsVariableSpaceUsingBind = true )>]
member this.Condition(p, [<ProjectionParameter>] b) =
condition p b
let attemp = AttemptBuilder()
let test =
attempt { let x, y = exp1, exp2
condition booleanExpr(x, y)
return (x, y) }
我假设 b
是隐含的 ( fun x, y -> booleanExpr(x, y) )
。术语 booleanExpr(x, y)
只是一些涉及 x
和 y
的布尔表达式。
找到了:
let condition p guard = ( fun () ->
match p() with
| Some x when guard x -> Some x
| _ -> None )
我很难在下面的代码中给出 condition
的定义。希望有一个例子和见解:
// a computation expression builder class
type Builder() =
.
.
.
[<CustomOperation( "condition",
MaintainsVariableSpaceUsingBind = true )>]
member this.Condition(p, [<ProjectionParameter>] b) =
condition p b
let attemp = AttemptBuilder()
let test =
attempt { let x, y = exp1, exp2
condition booleanExpr(x, y)
return (x, y) }
我假设 b
是隐含的 ( fun x, y -> booleanExpr(x, y) )
。术语 booleanExpr(x, y)
只是一些涉及 x
和 y
的布尔表达式。
找到了:
let condition p guard = ( fun () ->
match p() with
| Some x when guard x -> Some x
| _ -> None )