[Haskell-cafe] How is this variable not in scope?

Alejandro Serrano Mena trupill at gmail.com
Fri Jul 21 07:52:16 UTC 2017


The problem is that in the "where" clause the only things which are in
scope are (roughly) the arguments of the function. In particular, neither
"root" nor "inputFile" nor "input" nor "pairs". The solution is to add an
extra argument:

main' = do
  ...
  mapM_ (f root) pairs where
    f root (name, content) = writeFile (root ++ name) content

2017-07-21 9:28 GMT+02:00 Jeffrey Brown <jeffbrown.the at gmail.com>:

> 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>
>
>
> _______________________________________________
> Haskell-Cafe mailing list
> To (un)subscribe, modify options or view archives go to:
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> Only members subscribed via the mailman list are allowed to post.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20170721/b341fd47/attachment.html>


More information about the Haskell-Cafe mailing list