breakとcontinue
F#で楽々breakとcontinue。継続モナドまじパネぇっす!
モナドわかっていないんですが、なんかかっこいい感じがビジバシ伝わってきます!自分も使いこなせるようになりたい。
ところで、ふと疑問が。普通の?F#でbreakとcontinue相当したかったらどうなるんでしょう。結構考えてそれっぽいものができました。
[<Test>]
let ``emulate continue and break`` () =
let nums = [1..20]
nums
|> Seq.tryFindIndex ((=) 18)
|> Option.fold (fun seq index -> Seq.truncate (index + 1) seq) (Seq.ofList nums)
|> Seq.filter (fun i -> i % 2 = 1)
|> Seq.iter (printfn "%d")
リストの代わりに無限シーケンスを使ってもちゃんと動くので大丈夫そうです。
[<Test>]
let ``emulate continue and break`` () =
let nums = Seq.initInfinite (fun i -> i + 1)
nums
|> Seq.tryFindIndex ((=) 18)
|> Option.fold (fun seq index -> Seq.truncate (index + 1) seq) nums
|> Seq.filter (fun i -> i % 2 = 1)
|> Seq.iter (printfn "%d")