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