我似乎记得旧版本的 F# 在匹配序列时允许结构分解,就像列表一样。有没有办法在保持序列惰性的同时使用列表语法?我希望避免大量调用 Seq.head 和 Seq.skip 1。
我希望有类似的东西:
let decomposable (xs:seq<'a>) =
match xs with
| h :: t -> true
| _ -> false
seq{ 1..100 } |> decomposable
但这仅处理列表并在使用序列时给出类型错误。使用 List.of_seq 时,它似乎评估了序列中的所有元素,即使它是无限的。