Newbie question: why does the following give "Not in scope 'c'" for the last line?

string :: Parsec.Parser String
string = do c <- Parsec.letter
            do cs <- string
               return c:cs
            Parsec.<|> return [c]

(This is copied more or less rote from http://legacy.cs.uu.nl/daan/download/parsec/parsec.html , so I'm guessing there's some sort of command-line option I'm missing?)