@@ -213,7 +213,7 @@ import qualified Data.Text.Internal.Fusion as S
213import qualified Data.Text.Internal.Fusion.Common as S
213import qualified Data.Text.Internal.Fusion.Common as S
214import Data.Text.Internal.Fusion (stream, reverseStream, unstream)
214import Data.Text.Internal.Fusion (stream, reverseStream, unstream)
215import Data.Text.Internal.Private (span_)
215import Data.Text.Internal.Private (span_)
216−import Data.Text.Internal (Text(..), empty, firstf, safe, text, textP)
216+import Data.Text.Internal (Text(..), empty, firstf, safe, textP)
217import qualified Prelude as P
217import qualified Prelude as P
218import Data.Text.Unsafe (Iter(..), iter, iter_, lengthWord16, reverseIter,
218import Data.Text.Unsafe (Iter(..), iter, iter_, lengthWord16, reverseIter,
219 reverseIter_, unsafeHead, unsafeTail)
219 reverseIter_, unsafeHead, unsafeTail)
@@ -1004,7 +1004,7 @@ take :: Int -> Text -> Text
1004take n t@(Text arr off len)
1004take n t@(Text arr off len)
1005 | n <= 0 = empty
1005 | n <= 0 = empty
1006 | n >= len = t
1006 | n >= len = t
1007− | otherwise = text arr off (iterN n t)
1007+ | otherwise = textP arr off (iterN n t)
1008{-# INLINE [1] take #-}
1008{-# INLINE [1] take #-}
1010iterN :: Int -> Text -> Int
1010iterN :: Int -> Text -> Int
@@ -1031,7 +1031,7 @@ takeEnd :: Int -> Text -> Text
1031takeEnd n t@(Text arr off len)
1031takeEnd n t@(Text arr off len)
1032 | n <= 0 = empty
1032 | n <= 0 = empty
1033 | n >= len = t
1033 | n >= len = t
1034− | otherwise = text arr (off+i) (len-i)
1034+ | otherwise = textP arr (off+i) (len-i)
1035 where i = iterNEnd n t
1035 where i = iterNEnd n t
1037iterNEnd :: Int -> Text -> Int
1037iterNEnd :: Int -> Text -> Int
@@ -1049,7 +1049,7 @@ drop :: Int -> Text -> Text
1049drop n t@(Text arr off len)
1049drop n t@(Text arr off len)
1050 | n <= 0 = t
1050 | n <= 0 = t
1051 | n >= len = empty
1051 | n >= len = empty
1052− | otherwise = text arr (off+i) (len-i)
1052+ | otherwise = textP arr (off+i) (len-i)
1053 where i = iterN n t
1053 where i = iterN n t
1054{-# INLINE [1] drop #-}
1054{-# INLINE [1] drop #-}
@@ -1070,7 +1070,7 @@ dropEnd :: Int -> Text -> Text
1070dropEnd n t@(Text arr off len)
1070dropEnd n t@(Text arr off len)
1071 | n <= 0 = t
1071 | n <= 0 = t
1072 | n >= len = empty
1072 | n >= len = empty
1073− | otherwise = text arr off (iterNEnd n t)
1073+ | otherwise = textP arr off (iterNEnd n t)
1075-- | /O(n)/ 'takeWhile', applied to a predicate @p@ and a 'Text',
1075-- | /O(n)/ 'takeWhile', applied to a predicate @p@ and a 'Text',
1076-- returns the longest prefix (possibly empty) of elements that
1076-- returns the longest prefix (possibly empty) of elements that
@@ -1164,8 +1164,8 @@ splitAt :: Int -> Text -> (Text, Text)
1164splitAt n t@(Text arr off len)
1164splitAt n t@(Text arr off len)
1165 | n <= 0 = (empty, t)
1165 | n <= 0 = (empty, t)
1166 | n >= len = (t, empty)
1166 | n >= len = (t, empty)
1167+ | otherwise = let k = iterN n t
1167− | otherwise = (text arr off k, text arr (off+k) (len-k))
1168+ in (textP arr off k, textP arr (off+k) (len-k))
1168− where k = iterN n t
1170-- | /O(n)/ 'span', applied to a predicate @p@ and text @t@, returns
1170-- | /O(n)/ 'span', applied to a predicate @p@ and text @t@, returns
1171-- a pair whose first element is the longest prefix (possibly empty)
1171-- a pair whose first element is the longest prefix (possibly empty)
@@ -1188,7 +1188,7 @@ groupBy p = loop
1189 loop t@(Text arr off len)
1189 loop t@(Text arr off len)
1190 | null t = []
1190 | null t = []
1191− | otherwise = text arr off n : loop (text arr (off+n) (len-n))
1191+ | otherwise = textP arr off n : loop (textP arr (off+n) (len-n))
1192 where Iter c d = iter t 0
1192 where Iter c d = iter t 0
1193 n = d + findAIndexOrEnd (not . p c) (Text arr (off+d) (len-d))
1193 n = d + findAIndexOrEnd (not . p c) (Text arr (off+d) (len-d))