]> git.immae.eu Git - github/fretlink/text-pipes.git/commitdiff
Fixed `scan`
authorGabriel Gonzalez <Gabriel439@gmail.com>
Fri, 7 Feb 2014 15:08:47 +0000 (22:08 +0700)
committerGabriel Gonzalez <Gabriel439@gmail.com>
Fri, 7 Feb 2014 15:09:38 +0000 (22:09 +0700)
The first `Char` of each output chunk is redundant (since it would have been
emitted by the previous chunk).  This removes the duplicate `Char`s.

Note that this bug was present in `pipes-bytestring` as well, and I fixed it
there, too.

Pipes/Text.hs

index eb72be25905d0552ad0152df3cdd84f73338730c..4b2d2b04261f9dfe8d565b5b04acfc7be95c67c6 100644 (file)
@@ -485,13 +485,15 @@ filter predicate = P.map (T.filter predicate)
 scan
     :: (Monad m)
     => (Char -> Char -> Char) -> Char -> Pipe Text Text m r
-scan step begin = go begin
+scan step begin = do
+    yield (T.singleton begin)
+    go begin
   where
     go c = do
         txt <- await
         let txt' = T.scanl step c txt
             c' = T.last txt'
-        yield txt'
+        yield (T.tail txt')
         go c'
 {-# INLINABLE scan #-}