Кажется, я помню более старую версию F #, позволяющую структурную декомпозицию при сопоставлении последовательностей, подобных спискам. Есть ли способ использовать синтаксис списка, сохраняя последовательность ленивым? Я надеюсь, чтобы избежать много звонков Seq.head и Seq.skip 1.Можно ли совместить с разложенными последовательностями в F #?
Я надеюсь, что-то вроде:
let decomposable (xs:seq<'a>) =
match xs with
| h :: t -> true
| _ -> false
seq{ 1..100 } |> decomposable
Но это обрабатывает только списки и дает ошибку типа, когда используя последовательности. При использовании List.of_seq он, кажется, оценивает все элементы в последовательности, даже если он бесконечен.
ссылка здесь для тех, кто (как я) не знал, что такое блок питания: http://fsharppowerpack.codeplex.com/ – gatoatigrado