如何在 haskell 中使用 do 和 while 循环

how to use do and while loop in haskell

我尝试使用加法并打印每一步,但它不起作用,有人可以帮我吗?

addition x = x+1
acc_addition xs = do print xs
                     let result = addition xs
                         if result == 5
                            then return ()
                            else do
                                 print result
                                 addition result

你已经很接近了,你只需要在最后一步调用 acc_addition 而不是 addition。从语法上讲,您的 let 语句还需要一个 in

addition x = x+1
acc_addition xs = do print xs
                     let result = addition xs in
                         if result == 5
                            then return ()
                            else do
                                 print result
                                 acc_addition result

当 运行 通过 ghci:

*Main> acc_addition 1
1
2
2
3
3
4
4

它打印两次的原因当然是你有两个打印语句。