on master help sign in
Remove MonadIO constraints from "fromParser"
021ac26Harendra Kumar
core/src/Streamly/Internal/Data/Parser/ParserK/Type.hs+5−4
@@ -43,6 +43,7 @@ import Data.Proxy (Proxy(..))
43import GHC.Types (SPEC(..))
43import GHC.Types (SPEC(..))
44import Streamly.Internal.Data.Array.Type (Array(..))
44import Streamly.Internal.Data.Array.Type (Array(..))
45import Streamly.Internal.Data.Unboxed (peekWith, sizeOf, Unbox)
45import Streamly.Internal.Data.Unboxed (peekWith, sizeOf, Unbox)
46+import Streamly.Internal.System.IO (unsafeInlineIO)
46
47
47import qualified Control.Monad.Fail as Fail
48import qualified Control.Monad.Fail as Fail
48import qualified Streamly.Internal.Data.Array.Type as Array
49import qualified Streamly.Internal.Data.Array.Type as Array
@@ -360,7 +361,7 @@ data ChunkResult s b =
360-- This is very similar to fromParserD in the Array/Unboxed/Fold module.
361-- This is very similar to fromParserD in the Array/Unboxed/Fold module.
361{-# INLINE parseChunk #-}
362{-# INLINE parseChunk #-}
362parseChunk
363parseChunk
363− :: forall m a s b. (MonadIO m, Unbox a)
364+ :: forall m a s b. (Monad m, Unbox a)
364 => (s -> a -> m (ParserD.Step s b))
365 => (s -> a -> m (ParserD.Step s b))
365 -> s
366 -> s
366 -> Array a
367 -> Array a
@@ -387,7 +388,7 @@ parseChunk pstep !state (Array contents start end) !offset = do
387 go !_ !cur !pst | cur >= end =
388 go !_ !cur !pst | cur >= end =
388 return $ ChunkContinue ((end - start) `div` SIZE_OF(a)) pst
389 return $ ChunkContinue ((end - start) `div` SIZE_OF(a)) pst
389 go !_ !cur !pst = do
390 go !_ !cur !pst = do
390− x <- liftIO $ peekWith contents cur
391+ let !x = unsafeInlineIO $ peekWith contents cur
391 pRes <- pstep pst x
392 pRes <- pstep pst x
392 let elemSize = SIZE_OF(a)
393 let elemSize = SIZE_OF(a)
393 next = INDEX_NEXT(cur,a)
394 next = INDEX_NEXT(cur,a)
@@ -418,7 +419,7 @@ parseChunk pstep !state (Array contents start end) !offset = do
418
419
419{-# INLINE parseDToK #-}
420{-# INLINE parseDToK #-}
420parseDToK
421parseDToK
421− :: forall m a s b r. (MonadIO m, Unbox a)
422+ :: forall m a s b r. (Monad m, Unbox a)
422 => (s -> a -> m (ParserD.Step s b))
423 => (s -> a -> m (ParserD.Step s b))
423 -> m (ParserD.Initial s b)
424 -> m (ParserD.Initial s b)
424 -> (s -> m (ParserD.Step s b))
425 -> (s -> m (ParserD.Step s b))
@@ -490,7 +491,7 @@ parseDToK pstep initial extract cont !offset !usedCount !input = do
490-- /Pre-release/
491-- /Pre-release/
491--
492--
492{-# INLINE_LATE fromParser #-}
493{-# INLINE_LATE fromParser #-}
493−fromParser :: (MonadIO m, Unbox a) => ParserD.Parser a m b -> ParserK a m b
494+fromParser :: (Monad m, Unbox a) => ParserD.Parser a m b -> ParserK a m b
494fromParser (ParserD.Parser step initial extract) =
495fromParser (ParserD.Parser step initial extract) =
495 MkParser $ parseDToK step initial extract
496 MkParser $ parseDToK step initial extract
496
497