アルゴリズムとF#の並べ替えについて詳しく学習しようとしているときに、F#で挿入並べ替えを作成しました。私はF#と関数型プログラミングの完全な初心者です。
let insert (a: array<int>) i item =
i = i - 1
while i >= 0 && item < a.[i] do
a.[i + 1] = a.[i]
i = i - 1
a.[i + 1] = item
a
let sort (a: array<int>) =
for i in 1 .. (a.Length - 1) do
a = insert a i a.[i]
a
let a = [|3; 4; 1; 3;|]
a = sort a
for i in a do
printfn "%d" i
コードは正常にコンパイルされますが、実行可能ファイルを実行すると...
Unhandled Exception: System.IndexOutOfRangeException: Index was outside the boun
ds of the array.
at Isort.insert(Int32[] a, Int32 i, Int32 item)
at Isort.sort(Int32[] a)
at <StartupCode$isort>.$Isort.main@()
範囲外の例外がどこにあったかがわからないので、例外はちょっと役に立たないです...私のコードでこのエラーを修正する方法はありますか?