@@ -79,6 +79,7 @@ where
80import Control.Exception (assert)
80import Control.Exception (assert)
81import Control.DeepSeq (NFData(..), NFData1(..))
81import Control.DeepSeq (NFData(..), NFData1(..))
82+import Control.Monad (replicateM)
82import Control.Monad.IO.Class (MonadIO(..))
83import Control.Monad.IO.Class (MonadIO(..))
83import Data.Functor.Identity (Identity(..))
84import Data.Functor.Identity (Identity(..))
84import Data.Word (Word8)
85import Data.Word (Word8)
@@ -92,7 +93,7 @@ import Streamly.Internal.Data.Fold.Type (Fold(..))
92import Streamly.Internal.Data.Stream.Type (Stream)
93import Streamly.Internal.Data.Stream.Type (Stream)
93import Streamly.Internal.Data.Unboxed (Unbox, peekWith, sizeOf)
94import Streamly.Internal.Data.Unboxed (Unbox, peekWith, sizeOf)
94import Streamly.Internal.Data.Unfold.Type (Unfold(..))
95import Streamly.Internal.Data.Unfold.Type (Unfold(..))
95−import Text.Read (readPrec, readListPrec, readListPrecDefault)
96+import Text.Read (readPrec)
97import Prelude hiding (length, foldr, read, unlines, splitAt)
98import Prelude hiding (length, foldr, read, unlines, splitAt)
@@ -103,6 +104,7 @@ import qualified Streamly.Internal.Data.Stream.StreamK.Type as K
103import qualified Streamly.Internal.Data.Stream.Type as Stream
104import qualified Streamly.Internal.Data.Stream.Type as Stream
104import qualified Streamly.Internal.Data.Unboxed as Unboxed
105import qualified Streamly.Internal.Data.Unboxed as Unboxed
105import qualified Streamly.Internal.Data.Unfold.Type as Unfold
106import qualified Streamly.Internal.Data.Unfold.Type as Unfold
107+import qualified Text.ParserCombinators.ReadPrec as ReadPrec
107import Streamly.Internal.System.IO (unsafeInlineIO, defaultChunkSize)
109import Streamly.Internal.System.IO (unsafeInlineIO, defaultChunkSize)
@@ -481,13 +483,16 @@ write = fmap unsafeFreeze MA.write
481-------------------------------------------------------------------------------
483-------------------------------------------------------------------------------
483instance (Show a, Unbox a) => Show (Array a) where
485instance (Show a, Unbox a) => Show (Array a) where
484− {-# INLINE showsPrec #-}
486+ {-# INLINE show #-}
485− showsPrec _ = shows . toList
487+ show arr = "fromList " ++ show (toList arr)
487instance (Unbox a, Read a, Show a) => Read (Array a) where
489instance (Unbox a, Read a, Show a) => Read (Array a) where
488 {-# INLINE readPrec #-}
490 {-# INLINE readPrec #-}
492+ fromListWord <- replicateM 9 ReadPrec.get
493+ if fromListWord == "fromList "
489− readPrec = fromList <$> readPrec
494+ then fromList <$> readPrec
490− readListPrec = readListPrecDefault
495+ else ReadPrec.pfail
492instance (a ~ Char) => IsString (Array a) where
497instance (a ~ Char) => IsString (Array a) where
493 {-# INLINE fromString #-}
498 {-# INLINE fromString #-}