{-# LANGUAGE CPP #-} {-# OPTIONS_GHC -Wno-dodgy-exports #-} -- don't complain about empty exports for Agda.Utils.IArray -- | Array utilities. module Agda.Utils.IArray (module Agda.Utils.IArray, module Data.Array.IArray) where import Data.Array.IArray import Data.Array.Base ( IArray(..) ) import Data.Ix ( inRange ) #if MIN_VERSION_base(4,14,0) import GHC.Ix ( unsafeIndex ) #endif -- Backported from array-0.5.6: #if !MIN_VERSION_array(0,5,6) {-# INLINE (!?) #-} -- | Returns 'Just' the element of an immutable array at the specified index, -- or 'Nothing' if the index is out of bounds. -- (!?) :: (IArray a e, Ix i) => a i e -> i -> Maybe e (!?) arr i | inRange b i = Just $ unsafeAt arr $ #if MIN_VERSION_base(4,14,0) unsafeIndex b i #else index b i #endif | otherwise = Nothing where b = bounds arr #endif