given: inputA :: IO String inputB :: IO String update :: String -> String -> IO () Is there an elegant way to refactor / code golf this: doIt :: IO () doIt = do a <- inputA b <- inputB update a b liftM2 doesn't work in this case.. Thank you!