
The following compiles and runs perfectly: main = do (inputFile:_) <- getArgs input <- readFile inputFile let pairs = pairFilesToContents $ readSmsnLines input mapM_ f pairs where f :: (FilePath, String) -> IO () f (name, content) = writeFile name content But the following triggers the error "Not in scope: ‘root’". main' = do (root : inputFile :_) <- getArgs input <- readFile inputFile let pairs = pairFilesToContents $ readSmsnLines input mapM_ f pairs where f :: (FilePath, String) -> IO () f (name, content) = writeFile (root+name) content -- Jeff Brown | Jeffrey Benjamin Brown Website https://msu.edu/~brown202/ | Facebook https://www.facebook.com/mejeff.younotjeff | LinkedIn https://www.linkedin.com/in/jeffreybenjaminbrown(spammy, so I often miss messages here) | Github https://github.com/jeffreybenjaminbrown