Haskell:不在范围内:foldl'?

Ten*_*ngu 7 haskell module

作为我的第一个模块体验,我将Data.List导入了GHCi.(更准确地说,我输入import Data.List了我的GHCi)它似乎工作正常,因为我可以使用一些我以前没有的功能,比如foldl'我的GHCi.

我写haha = foldl' (+) 0 [1..10]了我的记事本++,并保存并加载然后GHCi说,Not in scope: foldl'即使它foldl' (+) 0 [1..10]直接键入我的GHCi 它工作得很好.

为什么这样,我如何foldl'在记事本上定义功能?

C. *_*ann 14

GHCi提示符的范围不一定与您从GHCi加载的任何文件中的范围相同.GHCi有自己的当前范围概念,它通常包括您加载的任何文件以及您明确添加的任何其他模块或您导入的任何内容的顶层.(如果加载自上次编译后尚未更改的文件,它的行为也会有所不同,这仍然让我感到困惑......)

无论如何,您只需要Data.List在代码文件中导入,例如:

module Main where

import Data.List

haha = foldl' (+) 0 [1..10]
Run Code Online (Sandbox Code Playgroud)

这样做之后,加载文件Data.List也会导致在GHCi提示符下有效导入,因为它在加载模块的顶层可见.

  • 我知道它没有多大区别,但我只是导入我感兴趣的功能,例如.`import Data.List(foldl')` (4认同)