[F#] seqリストで ”指定した条件の直前まで” 抜き出すにはどうするの?
コード:let takeUntil p (s : #seq<_>) = seq { let enum = s.GetEnumerator() in while enum.MoveNext() && not (p enum.Current) do yield enum.Current done }使用例:let even_choose i = Seq.choose (fun x -> if (x &&& 1) = 0 then Some(x) else None) i {1..10} |> even_choose |> takeUntil (fun x -> x > 6) |> Seq.fold ( + ) 0;;結果:val it : int = 12{1..10} -> [1;2;3;4;5;6;7;8;9;10] // リスト作成 even_choose -> [2;4;6;8;10] // 偶数のみ選択 takeUntil -> [2;4;6] // "6より大きい数が現れるまで" のリストをGet Seq.fold -> 12 // リストを合計 シチャイマスLabels: F# FSharp
0 Comments:
Post a Comment
<< Home