2013-05-03 63 views
5

作爲我的第一個模塊經驗,我將Data.List導入到我的GHCi中。 (更確切地說,我在我的GHCi上鍵入import Data.List)它似乎工作正常,因爲我可以使用我以前沒有的功能,例如我的GHCi上的foldl'Haskell:不在範圍內:foldl'?

我在我的記事本++寫haha = foldl' (+) 0 [1..10],並保存它,然後加載說GHCI Not in scope: foldl'即使它時,我直接在我的GHCI鍵入foldl' (+) 0 [1..10] workds就好了。

爲什麼會這樣,我如何在我的記事本上用foldl'定義函數?

回答

12

GHCi提示符的作用域不一定與您可能從GHCi加載的任何文件的作用域相同。 GHCi有其自己的當前範圍概念,通常包括您已加載的任何文件的頂層以及您明確添加的任何其他模塊或您導入的任何內容。 (這也表現不同,如果加載尚未更改,因爲它是最後編譯一個文件,這依舊讓我困惑...)

無論如何,你只需要在代碼文件本身,如進口Data.List

module Main where 

import Data.List 

haha = foldl' (+) 0 [1..10] 

這樣做後,加載文件應該導致Data.List被有效地導入GHCi提示符,因爲它在加載模塊的頂層是可見的。

+0

非常感謝您的快速回答! – Tengu 2013-05-03 16:51:45

+0

順便說一下,即使在當前目錄中有編譯對象,您也可以使用':load * Foo'來從源代碼載入GHCI。 – Carl 2013-05-03 18:40:51

+4

我知道它沒有多大區別,但我只是導入我感興趣的功能,例如。 '導入Data.List(foldl')' – chamini2 2013-05-03 19:04:09