OCaml でループを壊す必要があることがよくあります。少なくとも 2 つの方法があります。
(* by exception *)
try
for i = 0 to 100 do
...
if cond then raise BreakLoop
done;
...
with BreakLoop -> ...
(* by while *)
let cond = ref false in
let i = ref 0 in
while (not !cond) && (i<= 100) do
...
i := !i + 1
done;
if !cond then ...
私が最も気にかけているのは、プログラムが簡単に読めて理解できる限り、実行時間の最適化です。ネストされたループがいくつかある場合、この方法でwhile
はループが複雑になります。
インターネットのどこかで、OCaml で例外をスローしてキャッチするのはコストがかかると述べている人を見かけます。それが本当かどうか誰かが私を確認できますか?
while
では、時にはウェイバイウェイを使用し、時にはウェイを使用する必要がありますexception
か?