@@ -105,10 +105,12 @@ import qualified Data.Primitive.Types as PT
105105#if MIN_VERSION_base(4,9,0) && !MIN_VERSION_base(4,11,0)
106106import Data.Semigroup (Semigroup)
107107#endif
108−#if MIN_VERSION_base(4,9,0)
108+
109+#if MIN_VERSION_base(4,9,0) && MIN_VERSION_primitive(0,6,4)
109110import qualified Data.Semigroup as SG
110111#endif
111112
113+
112114-- | Arrays of unboxed elements. This accepts types like 'Double', 'Char',
113115-- 'Int', and 'Word', as well as their fixed-length variants ('Word8',
114116-- 'Word16', etc.). Since the elements are unboxed, a 'PrimArray' is strict
@@ -204,6 +206,8 @@ primArrayFromListN len vs = runST run where
204206primArrayToList :: forall a. Prim a => PrimArray a -> [a]
205207primArrayToList xs = build (\c n -> foldrPrimArray c n xs)
206208
209+#if MIN_VERSION_primitive(0,6,4)
210+
207211primArrayToByteArray :: PrimArray a -> PB.ByteArray
208212primArrayToByteArray (PrimArray x) = PB.ByteArray x
209213
@@ -226,6 +230,8 @@ instance Monoid (PrimArray a) where
226230#endif
227231 mconcat = byteArrayToPrimArray . mconcat . map primArrayToByteArray
228232
233+#endif
234+
229235-- | The empty primitive array.
230236emptyPrimArray :: PrimArray a
231237{-# NOINLINE emptyPrimArray #-}