我在输入“ else”上遇到解析错误,但不知道如何解决。我对这个haskell东西还是陌生的。
depot =
do
putStr ("Enter deposit amount: ")
deAmount <- getLine
let redeAmount = read deAmount
if redeAmount > 0 then
let accBal = redeAmount + accBal
else
putStrLn "Please enter amount greater than 0"
最佳答案
第一个错误是do
(及其后的所有内容)需要缩进。
下一个错误是,语法上let accBal = redeAmount + accBal
不能那样独立。它后面必须紧跟in
或必须直接在do
块内(在if
块内的do
内不计算在内)。
但是,即使您修复了语法,它也不会做您想要的事情。您不能使用let
重新分配变量。事实上,您根本无法重新分配变量。如果您修复了let
的语法,它将仅创建一个新变量accBal
,该变量将覆盖旧变量accBal
。该新变量的范围将是then
的if
块。离开if
块后,无论您在accBal
内部进行了什么操作,您都会accBal
再次引用if
的旧值。
因此,要解决您的问题,您需要重组逻辑,因此它不依赖于重新分配accBal
的情况。