@@ -1,6 +1,5 @@
1{-# LANGUAGE CPP #-}
1{-# LANGUAGE CPP #-}
2{-# LANGUAGE ConstraintKinds #-}
2{-# LANGUAGE ConstraintKinds #-}
3−{-# LANGUAGE DeriveTraversable #-}
4{-# LANGUAGE FlexibleContexts #-}
3{-# LANGUAGE FlexibleContexts #-}
5{-# LANGUAGE FlexibleInstances #-}
4{-# LANGUAGE FlexibleInstances #-}
6{-# LANGUAGE GeneralizedNewtypeDeriving#-}
5{-# LANGUAGE GeneralizedNewtypeDeriving#-}
@@ -43,6 +42,7 @@ module Streamly.Streams.Serial
45+import Control.Applicative (liftA2)
46import Control.DeepSeq (NFData(..), NFData1(..), rnf1)
46import Control.DeepSeq (NFData(..), NFData1(..), rnf1)
47import Control.Monad (ap)
47import Control.Monad (ap)
48import Control.Monad.Base (MonadBase(..), liftBaseDefault)
48import Control.Monad.Base (MonadBase(..), liftBaseDefault)
@@ -52,7 +52,8 @@ import Control.Monad.IO.Class (MonadIO(..))
52import Control.Monad.Reader.Class (MonadReader(..))
52import Control.Monad.Reader.Class (MonadReader(..))
53import Control.Monad.State.Class (MonadState(..))
53import Control.Monad.State.Class (MonadState(..))
54import Control.Monad.Trans.Class (MonadTrans(lift))
54import Control.Monad.Trans.Class (MonadTrans(lift))
55−import Data.Functor.Identity (Identity, runIdentity)
55+import Data.Functor.Identity (Identity(..), runIdentity)
56+import Data.Foldable (fold)
56import Data.Semigroup (Semigroup(..))
57import Data.Semigroup (Semigroup(..))
57import GHC.Exts (IsList(..), IsString(..))
58import GHC.Exts (IsList(..), IsString(..))
58import Text.Read (Lexeme(Ident), lexP, parens, prec, readPrec, readListPrec,
59import Text.Read (Lexeme(Ident), lexP, parens, prec, readPrec, readListPrec,
@@ -129,7 +130,7 @@ import qualified Streamly.Streams.StreamD as D
130-- @since 0.2.0
131-- @since 0.2.0
131newtype SerialT m a = SerialT {getSerialT :: Stream m a}
132newtype SerialT m a = SerialT {getSerialT :: Stream m a}
132− deriving (Semigroup, Monoid, MonadTrans, Foldable, Traversable)
133+ deriving (Semigroup, Monoid, MonadTrans)
134-- | A serial IO stream of elements of type @a@. See 'SerialT' documentation
135-- | A serial IO stream of elements of type @a@. See 'SerialT' documentation
135-- for more details.
136-- for more details.
@@ -249,7 +250,7 @@ MONAD_COMMON_INSTANCES(SerialT,)
250-- @since 0.2.0
251-- @since 0.2.0
251newtype WSerialT m a = WSerialT {getWSerialT :: Stream m a}
252newtype WSerialT m a = WSerialT {getWSerialT :: Stream m a}
252− deriving (MonadTrans, Foldable, Traversable)
253+ deriving (MonadTrans)
254-- | An interleaving serial IO stream of elements of type @a@. See 'WSerialT'
255-- | An interleaving serial IO stream of elements of type @a@. See 'WSerialT'
255-- documentation for more details.
256-- documentation for more details.
@@ -353,3 +354,9 @@ MONAD_COMMON_INSTANCES(WSerialT,)
354LIST_INSTANCES(SerialT)
355LIST_INSTANCES(SerialT)
355LIST_INSTANCES(WSerialT)
356LIST_INSTANCES(WSerialT)
358+FOLDABLE_INSTANCE(SerialT)
359+FOLDABLE_INSTANCE(WSerialT)
361+TRAVERSABLE_INSTANCE(SerialT)
362+TRAVERSABLE_INSTANCE(WSerialT)