Boundedインデックスの種類がで、インデックスの範囲が である多数の配列を作成しています(minBound, maxBound)。このような配列の場合、境界チェックは不要です。境界チェックをなくすように GHC を説得するにはどうすればよいですか?
私の特定のアプリケーションでは、ボックス化された不変配列とボックス化されていない不変配列の両方を使用していますが、すべてのタイプの Haskell 配列に興味があります。
Boundedインデックスの種類がで、インデックスの範囲が である多数の配列を作成しています(minBound, maxBound)。このような配列の場合、境界チェックは不要です。境界チェックをなくすように GHC を説得するにはどうすればよいですか?
私の特定のアプリケーションでは、ボックス化された不変配列とボックス化されていない不変配列の両方を使用していますが、すべてのタイプの Haskell 配列に興味があります。
をインポートし、目的の要素Data.Array.Baseのインデックスを計算して使用しますInt
someArray `unsafeAt` computedIndex
範囲チェックを回避するため(unsafeReadおよびunsafeWrite可変配列の場合)。Int範囲チェックなしのインデックスの計算は、クラスから使用できる必要があります。unsafeIndexIximport GHC.Arr
インデックス型のインスタンスが高速な非チェック関数をIx提供しない場合は、自分で作成する必要があります。範囲は一定であり、インデックス計算に渡す必要がないunsafeIndexため、とにかくそれが望ましい場合があります。(minBound, maxBound)