{-# OPTIONS_GHC -fno-warn-orphans #-}
{-# LANGUAGE CPP #-}

module Data.Validity.Primitive where

import Data.Validity

import qualified Data.Primitive.Array as A
#if MIN_VERSION_primitive(0,6,2)
instance Validity a => Validity (A.Array a) where
    validate = foldMap validate
#else
instance Validity a => Validity (A.Array a) where
    validate xs =
        let n = I# (sizeofArray# (array# xs))
         in delve "Primitive array" . validate $ indexArray xs <$> [0 .. n - 1]
#endif