Sorry for such a beginner-y question, but is there a way to make a function like: interact :: String -> Resp interact txt = putStrLn txt rsp <- getLine return parseResp rsp parseResp :: String -> Resp Or is that simply a wrong way of programming in Haskell with IO? Thanks (and apologies), -- kov