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