on master help sign in
Remove MonadIO constraints from "fromParser"
commit021ac262a8536312349e1a504d88a26bc3029138 authorHarendra Kumar <harendra@composewell.com> dateThu 16 Feb 2023, 07:03 (4 years ago) parent5a81623
1 file changed+5−4
core/src/Streamly/Internal/Data/Parser/ParserK/Type.hs+5−4
core/src/Streamly/Internal/Data/Parser/ParserK/Type.hs+5−4
@@ -43,6 +43,7 @@ import Data.Proxy (Proxy(..))
4343import GHC.Types (SPEC(..))
4444import Streamly.Internal.Data.Array.Type (Array(..))
4545import Streamly.Internal.Data.Unboxed (peekWith, sizeOf, Unbox)
46+import Streamly.Internal.System.IO (unsafeInlineIO)
4647
4748import qualified Control.Monad.Fail as Fail
4849import qualified Streamly.Internal.Data.Array.Type as Array
@@ -360,7 +361,7 @@ data ChunkResult s b =
360361-- This is very similar to fromParserD in the Array/Unboxed/Fold module.
361362{-# INLINE parseChunk #-}
362363parseChunk
363− :: forall m a s b. (MonadIO m, Unbox a)
364+ :: forall m a s b. (Monad m, Unbox a)
364365 => (s -> a -> m (ParserD.Step s b))
365366 -> s
366367 -> Array a
@@ -387,7 +388,7 @@ parseChunk pstep !state (Array contents start end) !offset = do
387388 go !_ !cur !pst | cur >= end =
388389 return $ ChunkContinue ((end - start) `div` SIZE_OF(a)) pst
389390 go !_ !cur !pst = do
390− x <- liftIO $ peekWith contents cur
391+ let !x = unsafeInlineIO $ peekWith contents cur
391392 pRes <- pstep pst x
392393 let elemSize = SIZE_OF(a)
393394 next = INDEX_NEXT(cur,a)
@@ -418,7 +419,7 @@ parseChunk pstep !state (Array contents start end) !offset = do
418419
419420{-# INLINE parseDToK #-}
420421parseDToK
421− :: forall m a s b r. (MonadIO m, Unbox a)
422+ :: forall m a s b r. (Monad m, Unbox a)
422423 => (s -> a -> m (ParserD.Step s b))
423424 -> m (ParserD.Initial s b)
424425 -> (s -> m (ParserD.Step s b))
@@ -490,7 +491,7 @@ parseDToK pstep initial extract cont !offset !usedCount !input = do
490491-- /Pre-release/
491492--
492493{-# 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
494495fromParser (ParserD.Parser step initial extract) =
495496 MkParser $ parseDToK step initial extract
496497