answerFalse::Int->IO()
answerFalse hp=do
hp--
if hp<=0 then
putStrLn"================Game Over================"
else
print(hp)
Run Code Online (Sandbox Code Playgroud)
我已经将hp声明为int值为3现在我的问题是当我输入"hp--"时,它显示错误
Couldn't match expected type `IO a0' with actual type `Int'
Run Code Online (Sandbox Code Playgroud)
但如果我把"--hp",结果打印是3而不是2.
我也试过让hp = hp-1,系统卡在那里.
您无法在Haskell中修改变量.hp++和++hp(或hp--和--hp)不哈斯克尔在所有的工作; --hp编译的原因是--创建一个注释掉部分的注释hp.
你要做的是这样的:
answerFalse hp =
if hp - 1 <= 0
then putStrLn "================Game Over================"
else print hp
Run Code Online (Sandbox Code Playgroud)
你也可以这样做,通过创建一个新的变量:
answerFalse hp = do
let newHp = hp - 1
if newHp <= 0
then putStrLn "================Game Over================"
else print hp
Run Code Online (Sandbox Code Playgroud)
您需要通过阅读初学者教程来查看您的基本Haskell知识.这个问题为您提供了优质的资源.