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

时间:2016-03-12 23:56:55

标签: haskell

我刚刚开始学习Haskell,并且已经查看了现有的答案,所以不要为此向我发起攻击,但为什么我无法使用{{1}在终端中加载.hs文件}}?

我在文件中的代码是:

:load -W filename.hs

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

1 个答案:

答案 0 :(得分:2)

正如评论中暗示的那样,您的代码严重一致。 case ... of的各个分支必须缩进以告诉Haskell它们“属于”它。这意味着你应该写:

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

然后,在表达式x*2:list xs中,您将list类型[Integer]应用于xs类型的[Integer]。这只是不会出现问题。你可能想要写一个递归调用 function doubleList。这意味着你应该写:

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

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