@@ -73,7 +73,6 @@ module Data.Text
7373 , transpose
7474 , reverse
7575 , replace
76− , replace2
7776
7877 -- ** Case conversion
7978 -- $case
@@ -617,19 +616,12 @@ reverse t = S.reverse (stream t)
617616--
618617-- In (unlikely) bad cases, this function's time complexity degrades
619618-- towards /O(n*m)/.
620−replace :: Text -- ^ Text to search for
621− -> Text -- ^ Replacement text
622− -> Text -- ^ Input text
623− -> Text
624−replace s d = intercalate d . splitOn s
625−{-# INLINE replace #-}
626−
627−replace2 :: Text -> Text -> Text -> Text
628−replace2 needle@(Text _ _ neeLen)
629− r@(Text repArr repOff repLen)
630− haystack@(Text hayArr hayOff hayLen)
631− | neeLen == 0 = emptyError "replace2"
632− | len < 0 = overflowError "replace2"
619+replace :: Text -> Text -> Text -> Text
620+replace needle@(Text _ _ neeLen)
621+ (Text repArr repOff repLen)
622+ haystack@(Text hayArr hayOff hayLen)
623+ | neeLen == 0 = emptyError "replace"
624+ | len < 0 = overflowError "replace"
633625 | len == 0 = empty
634626 | L.null ixs = haystack
635627 | otherwise = Text (A.run x) 0 len
@@ -639,7 +631,7 @@ replace2 needle@(Text _ _ neeLen)
639631 len = hayLen - (neeLen - repLen) * cnt
640632 x = do
641633 marr <- A.new len
642− let loop is0@(i:is) o d = do
634+ let loop (i:is) o d = do
643635 let d0 = d + i - o
644636 d1 = d0 + repLen
645637 A.copyI marr d hayArr (hayOff+o) d0