instance (Read a) => Read (IO a) where readsPrec d s = let xs = readsPrec d s in let m (x, s) = (return x, s) in map m xs main = do read "123" :: IO Int print "Hello" x <- read "123" :: IO Int print $ "World" ++ show x y <- read "42" print $ "World" ++ showInt y showInt :: Int -> String showInt = show