Haskellのbreak関数をF#で
こんなかんじだと思う。
let break' f list =
let rec loop list acc =
match list with
| [] ->
List.rev acc, list
| h::t ->
if f h then
List.rev acc, list
else
loop t (h::acc)
loop list [][1;2;3;4;5] |> break' ((=) 3) |> printfn "%A" // ([1; 2], [3; 4; 5])[1;2;3;4;5] |> break' ((=) 1) |> printfn "%A" // ([], [1; 2; 3; 4; 5])[1;2;3;4;5] |> break' ((=) 0) |> printfn "%A" // ([1; 2; 3; 4; 5], [])