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看起来很有趣,但如果没有一个好教授的指导和指导,这是一门很难学的语言。我只是想自学这门语言。
这不是空格--而是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”总是在“代码”显示中:无“代码”,火狐调试器警告说:“未知规则或错误读取规则在“包括” 我想我忘了一份文件,有什么帮助吗???