19 people like it.
Like the snippet!
Seq.tryTake
A more tolerant and open-minded take.
1:
2:
3:
4:
5:
6:
7:
8:
9:
|
module Seq =
let tryTake (n : int) (s : _ seq) =
let e = s.GetEnumerator ()
let i = ref 0
seq {
while e.MoveNext () && !i < n do
i := !i + 1
yield e.Current
}
|
module Seq
from Microsoft.FSharp.Collections
val tryTake : n:int -> s:seq<'a> -> seq<'a>
Full name: Script.Seq.tryTake
val n : int
Multiple items
val int : value:'T -> int (requires member op_Explicit)
Full name: Microsoft.FSharp.Core.Operators.int
--------------------
type int = int32
Full name: Microsoft.FSharp.Core.int
--------------------
type int<'Measure> = int
Full name: Microsoft.FSharp.Core.int<_>
val s : seq<'a>
Multiple items
val seq : sequence:seq<'T> -> seq<'T>
Full name: Microsoft.FSharp.Core.Operators.seq
--------------------
type seq<'T> = System.Collections.Generic.IEnumerable<'T>
Full name: Microsoft.FSharp.Collections.seq<_>
val e : System.Collections.Generic.IEnumerator<'a>
System.Collections.Generic.IEnumerable.GetEnumerator() : System.Collections.Generic.IEnumerator<'a>
val i : int ref
Multiple items
val ref : value:'T -> 'T ref
Full name: Microsoft.FSharp.Core.Operators.ref
--------------------
type 'T ref = Ref<'T>
Full name: Microsoft.FSharp.Core.ref<_>
System.Collections.IEnumerator.MoveNext() : bool
property System.Collections.Generic.IEnumerator.Current: 'a
More information