dph-lifted-vseg-0.6.0.1: Data/Array/Parallel/PArray/PRepr.hs
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE CPP #-}
#include "fusion-phases.h"
-- | Defines the `PRepr` family and `PA` class that converts between the user
-- level element types and our generic representation.
-- Apart from `unpackPA`, the `PA` wrapper functions defined here all have
-- equivalent `PR` versions in "Data.Array.Parallel.PArray.PData",
-- so see there for documentation.
module Data.Array.Parallel.PArray.PRepr
( module Data.Array.Parallel.PArray.PRepr.Base
, module Data.Array.Parallel.PArray.PRepr.Instances
-- * Nested Arrays
, module Data.Array.Parallel.PArray.PRepr.Nested
, unpackPA
-- * Tuple Arrays
, module Data.Array.Parallel.PArray.PRepr.Tuple)
where
import Data.Array.Parallel.PArray.PRepr.Base
import Data.Array.Parallel.PArray.PRepr.Instances
import Data.Array.Parallel.PArray.PRepr.Nested
import Data.Array.Parallel.PArray.PRepr.Tuple
import Data.Array.Parallel.PArray.PData
import Data.Array.Parallel.Pretty
import qualified Data.Vector as V
-- Pretty -------------------------------------------------------------------
instance (Show a, PA a)
=> Show (PArray a) where
show (PArray _ pdata)
= render
$ brackets
$ text "|"
<> (hcat $ punctuate comma
$ map (text . show) $ V.toList $ toVectorPA pdata)
<> text "|"
instance (PprVirtual a, PA a)
=> PprVirtual (PArray a) where
pprv (PArray _ pdata)
= brackets
$ text "|"
<> (hcat $ punctuate comma
$ map pprv $ V.toList $ toVectorPA pdata)
<> text "|"
-- Unpack ----------------------------------------------------------------------
-- | Unpack an array to reveal its representation.
{-# INLINE_PA unpackPA #-}
unpackPA :: PA a => PArray a -> PData (PRepr a)
unpackPA (PArray _ pdata)
= toArrPRepr pdata