Ответ 1
Импортируйте Data.Array.Base
, вычислите индекс Int
нужного элемента и используйте
someArray `unsafeAt` computedIndex
чтобы избежать проверки диапазона (unsafeRead
и unsafeWrite
для изменяемых массивов). Вычисление индекса Int
без проверки диапазона должно быть доступно через unsafeIndex
из класса Ix
, если вы import GHC.Arr
.
Если экземпляр Ix
вашего типа индекса не обеспечивает быструю непроверенную функцию unsafeIndex
, вы должны написать ее самостоятельно. Это может быть предпочтительным в любом случае, так как ваш диапазон (minBound, maxBound)
является постоянным и его не нужно передавать в вычисление индекса.