
I solved the hacker-rank hello world n times challenge thus: hello_worlds :: Int -> IO () hello_worlds n | n < 1 = return () | otherwise = do putStrLn "Hello World" hello_worlds (n-1) main :: IO() main = do n <- readLn :: IO Int hello_worlds n I would like to solve this by using the interact function. If I leave my hello_worlds function as is and change the main function as follows: main = interact $ show . hello_worlds . read::Int I get: Couldn't match expected type ‘IO t0’ with actual type ‘Int’ • In the expression: main When checking the type of the IO action ‘main’ helloworlds.hs:14:8-44: error: • Couldn't match expected type ‘Int’ with actual type ‘IO ()’ • In the expression: interact $ show . hello_worlds . read :: Int In an equation for ‘main’: main = interact $ show . hello_worlds . read :: Int could someone please explain why this can't work? Is it possible to use interact in such a context? Thanks