Невозможно определить пользовательское выражение "условие" для выражения вычисления

У меня возникли серьезные трудности с определением 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 )
Другие вопросы по тегам