Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我不能通过终端将Haskell文件加载到ghci中?_Haskell - Fatal编程技术网

为什么我不能通过终端将Haskell文件加载到ghci中?

为什么我不能通过终端将Haskell文件加载到ghci中?,haskell,Haskell,我刚刚开始学习Haskell,并且已经查找了现有的答案,所以请不要就此打倒我,但是为什么我无法使用:load-W filename.hs在终端中加载.hs文件 我在文件中的代码是: doubleList :: [Integer] -> [Integer] doubleList list = case list of [] -> [] (x:xs) -> x*2:list xs 如何将此文件加载到ghci中,然后使用正确的格式添加整数列表作为参数?正如注释中所暗示的,您的代码

我刚刚开始学习Haskell,并且已经查找了现有的答案,所以请不要就此打倒我,但是为什么我无法使用
:load-W filename.hs
在终端中加载
.hs
文件

我在文件中的代码是:

doubleList :: [Integer] -> [Integer]
doubleList list = case list of 
[] -> []
(x:xs) -> x*2:list xs

如何将此文件加载到ghci中,然后使用正确的格式添加整数列表作为参数?

正如注释中所暗示的,您的代码对齐错误。
案例的各个分支。。。of
必须缩进以告诉Haskell它们“属于”它。这意味着你应该写:

doubleList :: [Integer] -> [Integer]
doubleList list = case list of 
  [] -> []
  (x:xs) -> x*2:list xs
doubleList :: [Integer] -> [Integer]
doubleList list = case list of 
  [] -> []
  (x:xs) -> x*2:doubleList xs
然后,在表达式
x*2:list xs
中,您也在将
[Integer]
类型的
list
应用于
[Integer]
类型的
xs
。这根本无法进行打字检查。您可能打算编写对函数
doubleList
的递归调用。这意味着你应该写:

doubleList :: [Integer] -> [Integer]
doubleList list = case list of 
  [] -> []
  (x:xs) -> x*2:list xs
doubleList :: [Integer] -> [Integer]
doubleList list = case list of 
  [] -> []
  (x:xs) -> x*2:doubleList xs

至于
-W
选项,在
ghci
中加载文件与使用
ghc
进行类型检查有点不同:您不能像
ghc
那样将参数传递给
:load
。正如@chi所解释的,您必须使用
:set
来设置标志。

什么是
:load-W
?您是否尝试过加载文件名.hs?这一直有效。如果没有,当您尝试它时会发生什么?如果您的文件是这样的-它是无效的haskell,您应该得到一个错误-您应该通知我们。(首先,它的缩进不正确,其次,您尝试将
list
应用于
xs
-我认为您应该使用
doubleList xs
)我猜
-W
用于启用警告,这是一件好事。为此,可以在GHCi
:set-W
中使用。之后,可以使用
:l file.hs
加载该文件。警告也可以在源文件中启用,在文件的最顶端添加
{-#OPTIONS-W#-}
。谢谢大家,我刚刚开始,非常感谢这些指针。不过为什么要用-3来回答这个问题呢?我的结构有什么问题吗?或者应该只有知道如何在这里设置帖子问题的人??