Невозможно определить пользовательское выражение "условие" для выражения вычисления
У меня возникли серьезные трудности с определением 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
,
1 ответ
Решение
Нашел это:
let condition p guard = ( fun () ->
match p() with
| Some x when guard x -> Some x
| _ -> None )