on master help sign in
Use unsafeHead and unsafeTail for speed in a safe place

--HG-- extra : convert_revision : 38f13a9e00bde2d8a074ca00f9643faaf1896cb4

commit98a26cbcd06f3ff600f5c6a5219566114ca97163 authorBryan O'Sullivan <bos@serpentine.com> dateFri 13 Feb 2009, 06:47 (18 years ago) parentb8cf3e2
1 file changed+2−2
Data/Text.hs+2−2
Data/Text.hs+2−2
@@ -160,7 +160,7 @@ import qualified Data.Text.Fusion as S
160160import Data.Text.Fusion (Stream(..), Step(..), stream, unstream)
161161import Data.Text.Internal (Text(..), empty, text)
162162import qualified Prelude as P
163−import Data.Text.Unsafe (iter, iter_)
163+import Data.Text.Unsafe (iter, iter_, unsafeHead, unsafeTail)
164164import Data.Text.UnsafeChar (unsafeChr)
165165import qualified Data.Text.Utf16 as U16
166166
@@ -510,7 +510,7 @@ scanl f z t = unstream (S.scanl f z (stream t))
510510-- > scanl1 f [x1, x2, ...] == [x1, x1 `f` x2, ...]
511511scanl1 :: (Char -> Char -> Char) -> Text -> Text
512512scanl1 f t | null t = empty
513− | otherwise = scanl f (head t) (tail t)
513+ | otherwise = scanl f (unsafeHead t) (unsafeTail t)
514514{-# INLINE scanl1 #-}
515515
516516-- | /O(n)/ Like a combination of 'map' and 'foldl'. Applies a