我正在尝试使用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 | ^^^^^^
答案 0 :(得分:1)
有问题的名字是冒号后的名字,即nub
。
nub
在Data.List
模块中定义。您已经说过在GHCi中导入了该模块,但这并不重要,因为您没有在GHCi中使用nub
,而是在Haskell文件中使用nub
,这可能是不导入Data.List
。
Imports仅适用于包含import语句的文件。如果在GHCi中导入仅影响您输入GHCi的代码的内容,则不会影响从文件加载的代码。换句话说:您应该将导入写入experiment.hs
,而不是GHCi。