Учитывая предикат "p", который говорит, является ли решение достаточно хорошим. Функция стоимости "f", которая указывает, насколько хорошим является возможное решение, и функция, которая ищет "наилучшее" (то есть самое дешевое) решение в последовательности возможных решений. Как выглядит идиоматический способ отменить оценку - если предикат гарантирует, что текущее решение является «достаточно хорошим» - похоже на
т.е. что-то вроде этого:
let search p f solutionSpace =
solutionSpace |> Seq.map (fun x -> f x, x)
|> Seq.ignoreAllFollowingElementsWhenPredicateIsTrue (fun (c, s) -> p c)
|> Seq.minBy (fun (c, _) -> c)