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 を使用すると、無限であっても、シーケンス内のすべての要素を評価するようです。