module Data.Array.Repa.Repr.Undefined ( X, Array (..)) where import Data.Array.Repa.Base import Data.Array.Repa.Shape import Data.Array.Repa.Eval.Fill -- | An array with undefined elements. -- -- * This is normally used as the last representation in a partitioned array, -- as the previous partitions are expected to provide full coverage. data X data instance Array X sh e = AUndefined !sh deriving instance Show sh => Show (Array X sh e) deriving instance Read sh => Read (Array X sh e) -- | Undefined array elements. Inspecting them yields `error`. -- instance Repr X e where deepSeqArray _ x = x {-# INLINE deepSeqArray #-} extent (AUndefined sh) = sh {-# INLINE extent #-} index (AUndefined _) _ = error $ "Repa: array element is undefined." {-# INLINE index #-} linearIndex (AUndefined _) ix = error $ "Repa: array element at " ++ show ix ++ " is undefined." {-# INLINE linearIndex #-} instance (Shape sh, Fillable r2 e, Num e) => Fill X r2 sh e where fillS _ _ = return () fillP _ _ = return ()