当前位置: 首页 > 知识库问答 >
问题:

为什么这个不能加载到GHCI中

章兴发
2023-03-14
let partialsums lst = reverse ( partial_sums lst 0 [] ) where
                      partial_sums ls accum accumulator_list = 
                      if ls == [] then accumulator_list else
                      partial_sums ( tail ls ) ( accum + head ls ) 
                      ((accum + head ls) : accumulator_list)

谢谢你的帮助。Haskell看起来很有趣,但如果没有一个好教授的指导和指导,这是一门很难学的语言。我只是想自学这门语言。

共有1个答案

戚良弼
2023-03-14

这不是空格--而是let(正如chi提到的,您必须缩进partial_sums的正文--对不起,我一开始没有检查这个):

如果要在.hs文件中定义函数,则应编写如下内容:

partialsums lst = reverse ( partial_sums lst 0 [] ) where
                  partial_sums ls accum accumulator_list = 
                     if ls == [] then accumulator_list else
                     partial_sums ( tail ls ) ( accum + head ls ) 
                     ((accum + head ls) : accumulator_list)

虽然我会写得更像这样:

partialsums lst = reverse ( partial_sums lst 0 [] ) 
   where
      partial_sums ls accum accumulator_list = 
         if ls == [] 
         then accumulator_list 
         else
            partial_sums ( tail ls ) ( accum + head ls ) 
                  ((accum + head ls) : accumulator_list)
partialsums :: Num a => [a] -> [a]
partialsums lst = reverse ( partial_sums lst 0 [] ) 
   where
      partial_sums [] _ accumulator_list = accumulator_list
      partial_sums (h:tl) accum accumulator_list =
            let accum' = accum + h in
            partial_sums tl accum' (accum' : accumulator_list)
> partialsums [1..5]
[1,3,6,10,15]
partialSums :: Num a => [a] -> [a]
partialSums = scanl1 (+)
 类似资料:
  • 预计此函数将无法typeCheck。然而,没有解释发生这种情况的原因。在GHCI中试用时,我得到了以下输出: 为什么会出现这种情况?

  • 奇怪的是,标记为“OK”的行编译得很好,但标记为“Error”的行失败了。它们看起来基本上是一样的。

  • chrome浏览器 onclick链接 O:https://www.w3schools.com窗口打开 X:about:空白窗口打开

  • 然而,Antlr似乎不喜欢我在两个不同的地方使用“函数”。据我所知,语法甚至没有歧义。 在下面的语法中,如果我删除第1行,生成的解析器解析示例输入没有问题。另外,如果我更改第2行或第3行中的令牌字符串,使它们不相等,解析器就会工作。 我得到的语法错误是: 测试生成的解析器的程序:

  • 我从课本上抄了一个例子,但它拒绝编译。我是不是在什么地方打错了?出于某种原因,在客户端代码中,collections.sort(words)不允许程序编译。任何帮助都很感激。代码复制自Stuart Reges和Marty Stepp的“构建Java程序”第二版。我正试图通过复制来理解它。 该程序应该将一个CalendarDate对象装入一个ArrayList中。通过实现CalendarDate的可

  • 我洛基,在“开始”之后,我遵循https://getbootstrap.com/docs/4.3/layout/overview/的指示(我猜在那个例子中缺少了一些东西) 我说: 链接到头标签中的css文件 但是它不起作用,类“hid-ph-flex”总是在“代码”显示中:无“代码”,火狐调试器警告说:“未知规则或错误读取规则在“包括” 我想我忘了一份文件,有什么帮助吗???