Haskell 在where in do块中使用外部范围中的变量

Haskell 在where in do块中使用外部范围中的变量,haskell,scope,where-clause,do-notation,Haskell,Scope,Where Clause,Do Notation,我尝试在do块中定义的操作中使用外部范围中定义的变量,其中使用: 模块主要在哪里 main::IO main=do outerVardo块只是使用>>=和lambda函数链接一元值的语法糖。编译器首先将您的块转换为: return "a" >>= \outerVar -> doSomething where doSomething =... 很明显,outerVar不在lambda之外的范围内,它是一个参数 do块只是使用>>=和lambda函数链接一元值的语法糖。编译器

我尝试在do块中定义的操作中使用外部范围中定义的变量,其中使用:

模块主要在哪里 main::IO main=do outerVardo块只是使用>>=和lambda函数链接一元值的语法糖。编译器首先将您的块转换为:

return "a" >>= \outerVar -> doSomething
  where doSomething =...
很明显,outerVar不在lambda之外的范围内,它是一个参数

do块只是使用>>=和lambda函数链接一元值的语法糖。编译器首先将您的块转换为:

return "a" >>= \outerVar -> doSomething
  where doSomething =...

很明显,outerVar不在lambda之外的范围内,它是一个参数

是的,完全是同一个问题。谢谢我不知道为什么我之前找不到这个问题……也与我重新打开这个问题有关,然后立即意识到没有必要这么做。对不起,不必要的ping!是的,完全是同一个问题。谢谢我不知道为什么我之前找不到这个问题……也与我重新打开这个问题有关,然后立即意识到没有必要这么做。对不起,不必要的ping!谢谢这部分解释在我无意中重复的问题的答案中缺失了。现在更清楚了。谢谢!这部分解释在我无意中重复的问题的答案中缺失了。它现在更清楚了。