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