gpt4 book ai didi

Haskell:使用 'where' 和 guard 解析错误

转载 作者:行者123 更新时间:2023-12-01 07:01:31 27 4
gpt4 key购买 nike

因此,我刚刚开始从 Real World Haskell 一书中自学 Haskell,并且在做其中一个练习的过程中,我编写了以下代码:

step acc ch | isDigit ch = if res < acc   
then error "asInt_fold: \
\result overflowed"
else res
where res = 10 * acc + (digitToInt ch)
| otherwise = error ("asInt_fold: \
\not a digit " ++ (show ch))

当我将其加载到 GHCi 6.6 中时,出现以下错误:
IntParse.hs:12:12: parse error on input `|'
Failed, modules loaded: none.

我几乎可以肯定这个错误是由于“where”子句和随后的守卫的相互作用造成的;注释掉守卫会消除它,就像用等效的“let”子句替换“where”子句一样。我也很确定我一定以某种方式破坏了缩进,但我无法弄清楚如何。

提前感谢您的任何提示。

最佳答案

where不能放在守卫之间。来自段落4.4.3.1 Function bindings在 Haskell 报告中。

关于Haskell:使用 'where' 和 guard 解析错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1316186/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com