diff options
| author | John MacFarlane <jgm@berkeley.edu> | 2022-03-31 23:09:14 -0700 |
|---|---|---|
| committer | John MacFarlane <jgm@berkeley.edu> | 2022-03-31 23:09:14 -0700 |
| commit | c1ab48874c04142988505ca5c5caa6626bb68211 (patch) | |
| tree | 1a0496fd2a38b938baaab6b115587780b2cc7643 /src | |
| parent | a11cbc7b579c5d471295d42e6dde19a749403877 (diff) | |
Parsing.General: make manyChar1, etc. more strict.
Profiling the muse reader revealed that these were creating huge thunks.
Diffstat (limited to 'src')
| -rw-r--r-- | src/Text/Pandoc/Parsing/General.hs | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/Text/Pandoc/Parsing/General.hs b/src/Text/Pandoc/Parsing/General.hs index c03bda117..024038f55 100644 --- a/src/Text/Pandoc/Parsing/General.hs +++ b/src/Text/Pandoc/Parsing/General.hs @@ -68,6 +68,7 @@ import Control.Monad , unless , void , when + , (<$!>) ) import Control.Monad.Except ( MonadError(throwError) ) import Control.Monad.Identity ( Identity(..), MonadPlus(mzero) ) @@ -199,20 +200,20 @@ indentWith num = do manyChar :: Stream s m t => ParserT s st m Char -> ParserT s st m Text -manyChar = fmap T.pack . many +manyChar p = T.pack <$!> many p -- | Like @many1@, but packs its result. many1Char :: Stream s m t => ParserT s st m Char -> ParserT s st m Text -many1Char = fmap T.pack . many1 +many1Char p = T.pack <$!> many1 p -- | Like @manyTill@, but packs its result. manyTillChar :: Stream s m t => ParserT s st m Char -> ParserT s st m a -> ParserT s st m Text -manyTillChar p = fmap T.pack . manyTill p +manyTillChar p end = T.pack <$!> manyTill p end -- | Like @manyTill@, but reads at least one item. many1Till :: (Show end, Stream s m t) |
