Vereinfachende Schreibweise für Aktionen
Fast wie imperative Programmierung (syntactic sugar):

echoLnR = getLine >>=   
		  putStrLn >>   
          echoLnR  
  
-- ZU   
  
echoLnR = do s <- getLine   
		     putStrLn s   
		     echoLnR  

Beispiel

  
-- Aktion, die drei Zeichen einliest, das mittlere Zeichen ignoriert und das erste und dritte als Paar zurückgibt:  
act :: IO (Char, Char)   
act = do x <- getChar   
         getChar   
         y <- getChar   
         return (x,y)  
  
  
echo3 :: Int -> IO ()  
echo3 cnt = do  
  putStr (show cnt ++ ": ")  
  s <- getLine   
  if s /= "" then do   
	  putStrLn $ show cnt ++ ": " ++ s   
	  echo3 (cnt + 1)   
  else return ()