git.iko.soy/typeable/pandoc
on master help sign in
Use strict instead of lazy sum.
7fa5fbeJohn MacFarlane
src/Text/Pandoc/Pretty.hs+3−3
@@ -65,7 +65,7 @@ import Control.Monad
65import Control.Monad.State.Strict
65import Control.Monad.State.Strict
66import Data.Char (isSpace)
66import Data.Char (isSpace)
67import Data.Foldable (toList)
67import Data.Foldable (toList)
68−import Data.List (intersperse)
68+import Data.List (intersperse, foldl')
69import Data.Sequence (Seq, ViewL (..), fromList, mapWithIndex, singleton, viewl,
69import Data.Sequence (Seq, ViewL (..), fromList, mapWithIndex, singleton, viewl,
70 (<|))
70 (<|))
71import qualified Data.Sequence as Seq
71import qualified Data.Sequence as Seq
@@ -305,7 +305,7 @@ renderList (BreakingSpace : xs) = do
305 let xs' = dropWhile isBreakingSpace xs
305 let xs' = dropWhile isBreakingSpace xs
306 let next = takeWhile isText xs'
306 let next = takeWhile isText xs'
307 st <- get
307 st <- get
308− let off = sum $ map offsetOf next
308+ let off = foldl' (+) 0 $ map offsetOf next
309 case lineLength st of
309 case lineLength st of
310 Just l | column st + 1 + off > l -> do
310 Just l | column st + 1 + off > l -> do
311 outp (-1) "\n"
311 outp (-1) "\n"
@@ -540,4 +540,4 @@ charWidth c =
540-- | Get real length of string, taking into account combining and double-wide
540-- | Get real length of string, taking into account combining and double-wide
541-- characters.
541-- characters.
542realLength :: String -> Int
542realLength :: String -> Int
543−realLength = sum . map charWidth
543+realLength = foldl' (+) 0 . map charWidth
src/Text/Pandoc/Writers/Shared.hs+2−2
@@ -41,7 +41,7 @@ import Data.Aeson (FromJSON (..), Result (..), ToJSON (..), Value (Object),
41 encode, fromJSON)
41 encode, fromJSON)
42import Data.Char (chr, ord, isSpace, isDigit)
42import Data.Char (chr, ord, isSpace, isDigit)
43import qualified Data.HashMap.Strict as H
43import qualified Data.HashMap.Strict as H
44−import Data.List (groupBy, intersperse, transpose)
44+import Data.List (groupBy, intersperse, transpose, foldl')
45import qualified Data.Map as M
45import qualified Data.Map as M
46import Data.Maybe (isJust)
46import Data.Maybe (isJust)
47import qualified Data.Text as T
47import qualified Data.Text as T
@@ -279,7 +279,7 @@ gridTable opts blocksToDoc headless aligns widths headers rows = do
279 -- handleGivenWidths
279 -- handleGivenWidths
280 let handleZeroWidths = do
280 let handleZeroWidths = do
281 (widthsInChars', rawHeaders', rawRows') <- handleFullWidths
281 (widthsInChars', rawHeaders', rawRows') <- handleFullWidths
282− if sum widthsInChars' > writerColumns opts
282+ if foldl' (+) 0 widthsInChars' > writerColumns opts
283 then -- use even widths
283 then -- use even widths
284 handleGivenWidths
284 handleGivenWidths
285 (replicate numcols (1.0 / fromIntegral numcols) :: [Double])
285 (replicate numcols (1.0 / fromIntegral numcols) :: [Double])