4
我今天就开始在哈斯克尔,并且我在ghci上执行的所有功能都显示此消息。我只是想知道这是为什么happenning.I知道,存在很多关于这个问题,但是这是一个简单的例子,我需要知道这个错误在开始时错误haskell:不在范围内。这是什么意思?
function3 :: Int -> [Int]
function3 x = [a | a <- [1..x] mod a x == 0]
我今天就开始在哈斯克尔,并且我在ghci上执行的所有功能都显示此消息。我只是想知道这是为什么happenning.I知道,存在很多关于这个问题,但是这是一个简单的例子,我需要知道这个错误在开始时错误haskell:不在范围内。这是什么意思?
function3 :: Int -> [Int]
function3 x = [a | a <- [1..x] mod a x == 0]
,当你键入错误没有发生GHCi中的函数类型?
$ ghci
GHCi, version 8.0.1: http://www.haskell.org/ghc/ :? for help
Prelude> function3 :: Int -> [Int]
<interactive>:1:1: error:
Variable not in scope: function3 :: Int -> [Int]
Prelude>
如果是的话,你必须使用多行输入
Prelude> :{
Prelude| function3 :: Int -> [Int]
Prelude| function3 x = [a | a <- [1..x], mod a x == 0]
Prelude| :}
而之前mod
指出,
另外,为了更好的工作流程,您可以将您的密码保存到一个文件并使用GHCi负载:load
$ cat tmp/functions.hs
function3 :: Int -> [Int]
function3 x = [a | a <- [1..x], mod a x == 0]
$ ghci
GHCi, version 8.0.1: http://www.haskell.org/ghc/ :? for help
Prelude> :l tmp/functions.hs
[1 of 1] Compiling Main (tmp/functions.hs, interpreted)
Ok, modules loaded: Main.
*Main> :t function3
function3 :: Int -> [Int]
*Main>
“不在范围内”意味着您正在尝试使用未在您尝试使用它的地方定义的名称。在这种情况下,发生这种情况的原因是你在'[1..x]'后面留下了一个逗号,所以你在列表理解中的'a'定义不能正常工作。将其更改为'[a | a < - [1..x],mod a x == 0]' – duplode
如果在问题中包含整个GHCi错误消息,它会有所帮助。 – wizzup