I have this from Peyton Jones awkward squad paper

getTwoChars :: IO (Char,Char)
getTwoChars = do
            c1 <- getChar
            c2 <- getChar
            return (c1,c2)

Can someone explain what is happening here?
*Main> getTwoChars
ab
('a','b')
*Main> getTwoChars
a
('\n','a')