Кажется, я помню более старую версию 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 он, кажется, оценивает все элементы в последовательности, даже если он бесконечен.