变量范围的错误.hys:150:23:错误

时间:2018-03-14 14:59:01

标签: haskell

我正在尝试使用http://learnyouahaskell.com/modules中的以下功能:

numUniques :: (Eq a) => [a] -> Int
numUniques = length . nub

我已将上述代码输入到emacs文件中。在GHCi上,我使用Data.List导入了import Data.List模块。 但是,当我将文件上传到GHCi时,我会收到

experiment.hs:150:23: error:
Variable not in scope: nub :: [a] -> t0 a0
|
150 | numUniques = length . nub     |                       ^^^

此处有关于Variable not in scope消息的各种问题。但是,我不清楚他们如何能够帮助我解决我遇到的问题。从其他答案我收集到“不在范围内”意味着您正在尝试使用未在您尝试使用它的位置定义的名称。

但是,我不知道这是哪个名字。

我尝试将以下代码放入我的emacs文件中,然后用它加载GHCi:

import Data.List  

numUniques :: (Eq a) => [a] -> Int
numUniques = length . nub

但是,我收到以下消息:

experiment.hs:149:1: error: parse error on input ‘import’
|
 149 | import Data.List       | ^^^^^^

1 个答案:

答案 0 :(得分:1)

有问题的名字是冒号后的名字,即nub

nubData.List模块中定义。您已经说过在GHCi中导入了该模块,但这并不重要,因为您没有在GHCi中使用nub,而是在Haskell文件中使用nub,这可能是不导入Data.List

Imports仅适用于包含import语句的文件。如果在GHCi中导入仅影响您输入GHCi的代码的内容,则不会影响从文件加载的代码。换句话说:您应该将导入写入experiment.hs,而不是GHCi。