如何尝试在无限有序序列中查找元素?

H.B*_*.B. 3 f# sequence

如果我有一个无限的序列,我就不能使用法线Seq.tryFind.

但是,如果序列是有序的,那意味着当我检测到序列中没有其他元素可以满足我的条件时,可以取消搜索.

是否有一种优雅的方式来表达这样的搜索?

des*_*sco 5

如果你只想使用标准功能 - 这样的东西会起作用

let evens =  Seq.initInfinite ((*)2)
let has v = 
    Seq.tryPick (fun x ->
        if x = v then Some (Some v)
        elif x > v then Some None
        else None)
    >> Option.bind id
has 40 evens // Some 40
has 41 evens // None
Run Code Online (Sandbox Code Playgroud)