on master help sign in
Small tweaklets.

--HG-- extra : convert_revision : 53718628db7ec636c175ffa0db861b5dcf879a94

commitda5b8299c17a9c6b8a64c728796ee1cf1a6e0577 authorBryan O'Sullivan <bos@serpentine.com> dateMon 3 May 2010, 05:14 (16 years ago) parent2a768da
1 file changed+6−5
Data/Text/Lazy/Builder.hs+6−5
Data/Text/Lazy/Builder.hs+6−5
@@ -158,8 +158,10 @@ flush = Builder $ \ k buf@(Buffer p o u l) ->
158158 if u == 0
159159 then k buf
160160 else do arr <- A.unsafeFreeze p
161− buf' <- inlineInterleaveST (k (Buffer p (o+u) 0 l))
162− return (Text arr o u : buf')
161+ let !b = Buffer p (o+u) 0 l
162+ !t = Text arr o u
163+ buf' <- inlineInterleaveST (k b)
164+ return $! t : buf'
163165
164166------------------------------------------------------------------------
165167
@@ -175,8 +177,7 @@ withSize f = Builder $ \ k buf@(Buffer _ _ _ l) ->
175177
176178-- | Map the resulting list of texts.
177179mapBuilder :: ([S.Text] -> [S.Text]) -> Builder
178−mapBuilder f = Builder $ \ k buf -> do txt <- k buf
179− return (f txt)
180+mapBuilder f = Builder (fmap f .)
180181
181182------------------------------------------------------------------------
182183
@@ -212,7 +213,7 @@ writeNBuffer :: Int -> (A.MArray s Word16 -> Int -> ST s ()) -> (Buffer s)
212213 -> ST s (Buffer s)
213214writeNBuffer n f (Buffer p o u l) = do
214215 f p (o+u)
215− return (Buffer p o (u+n) (l-n))
216+ return $! Buffer p o (u+n) (l-n)
216217{-# INLINE writeNBuffer #-}
217218
218219newBuffer :: Int -> ST s (Buffer s)