Haskell做循环

时间:2013-11-21 16:55:33

标签: haskell while-loop

我对Haskell很新,并且不明白haskell如何处理递归。我已经在这个问题上工作了好几个月,只是想不通。我的项目将在几天后到期,所以我要求任何帮助或建议!我的项目描述是有7个“罪犯”,其中三个是“有罪”我必须随机显示7个罪犯中的三个,告诉三个人中有多少是有罪的,并询问用户是否想要猜测有罪的人或通过,直到所有猜测都正确。我已经弄明白了其他一切,我只是坚持如何使用递归函数从7重复显示3个randoms,请求输入,并检查它是否正确。

好的,从查看你给我的东西,我试着做一个小函数尝试使用递归作为一个循环,然后我将它实现到我的项目中,这就是我提出的:

main = do
    num <- 7
    print recursion(num)


let recursion a = do
    putStrLn "guess my number!" 
    guess <- getLine 

    if a==guess 
        then print "good job"
            return guess
        else
            recursion a

但是我在最后的行上得到了一些解析错误,你能告诉我我做错了什么吗? @stonemetal

1 个答案:

答案 0 :(得分:1)

递归函数应该是简单的部分。您需要做的就是决定何时结束递归,然后再次调用该函数,如果该条件不成立。

let runGame gameData = do newGameData <- runOneIterationOfGame gameData
                          if gameOver newGameData then
                            return newGameData
                          else
                            runGame newGameData