Python のenumerate()のように機能する F# シーケンスを列挙する標準関数はありますか?
最初から書くのはとても簡単です:
let enumerate (sq : seq<'T>) = seq {
let rec loop (e : IEnumerator<'T>) index = seq {
if e.MoveNext() then
yield (index, e.Current)
yield! loop e (index+1)
}
use enum = sq.GetEnumerator()
yield! loop enum 0
}
しかし、車輪の再発明はしたくありません。
PS:また、試しました
let seasons = ["Spring"; "Summer"; "Fall"; "Winter"]
for x in Seq.zip [0..100000] seasons do
printfn "%A" x
しかし、この[0..10000]
部分は醜く見えます。