使い道がわからなかったwindowedですが、とりあえず、まとまった前後の要素を見ながら処理したいという用途で使えるのかな。例えば、ある配列の要素から前後の要素との平均を求めるみたいな処理で使えるとか・・・?
open System // 適当な元データ作る let r = Random() let arr = [| for i = 0 to 5 do yield (r.NextDouble() * 100.) |] printfn "元データ = %A" arr arr |> Seq.windowed 3 |> Seq.map (function | [|a;b;c|] -> (a + b + c) / 3.0 | _ -> failwith "Invalid") // ありえないけど |> Seq.toArray |> (printfn "平均 = %A")
実行結果
元データ = [|12.88210811; 57.23914544; 88.44198794; 55.74756793; 43.12834597; 15.68328315|] 平均 = [|52.85441383; 67.14290044; 62.43930061; 38.18639902|]
ふむぅ。ぴん!と来たときに使えるように頭に入れておこう。