Extension of interact for stateless repls that process input line by line.
interact
interactLn :: (String -> String) -> IO () interactLn f = interact $ unlines . map f . lines