Enumerable.SkipとSeq.skip

Enumerable.Skipに相当するものがF#にはないんですね。Seq.skipは件数足りないときに例外なげます。Enumerable.Skip vs Seq.skipに対策方法が書いてあります。

Seqという名前で自分のモジュールを作って、そこに関数おくのがわかりやすいかも。あたかも、F#のSeqモジュールに備わっているかのように扱えます。

module Seq =
let eskip count (source : seq<_>) =
System.Linq.Enumerable.Skip(source, count)

[<Test>]
let ``test skip with my module``() =
let result =
seq { 1 .. 10 }
|> Seq.map (fun x -> x * 2)
|> Seq.eskip 20

Assert.IsTrue(Seq.isEmpty result)

ここでは、参照元に合わせて関数名をeskipとしましたが、skipとすればF#のSeqモジュールのskipを隠すこともできますね。