@@ -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