module TextShow.Data.Array (showbIArrayPrec) where
import qualified Data.Array as Array (assocs, bounds)
import Data.Array (Array)
import qualified Data.Array.Base as IArray (assocs, bounds)
import Data.Array.Base (IArray)
import Data.Array.Unboxed (UArray)
import Data.Ix (Ix)
import Data.Monoid.Compat ((<>))
import Data.Text.Lazy.Builder (Builder)
import GHC.Show (appPrec)
import Prelude ()
import Prelude.Compat
import TextShow.Classes (TextShow(..), showbParen, showbSpace)
import TextShow.Data.List ()
import TextShow.Data.Tuple ()
showbIArrayPrec :: (IArray a e, Ix i, TextShow i, TextShow e) => Int -> a i e -> Builder
showbIArrayPrec p a = showbParen (p > 9) $
"array "
<> showb (IArray.bounds a)
<> showbSpace
<> showb (IArray.assocs a)
instance (TextShow i, TextShow e, Ix i) => TextShow (Array i e) where
showbPrec p a = showbParen (p > appPrec) $
"array "
<> showb (Array.bounds a)
<> showbSpace
<> showb (Array.assocs a)
instance (IArray UArray e, Ix i, TextShow i, TextShow e) => TextShow (UArray i e) where
showbPrec = showbIArrayPrec