-2

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

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
4

1 回答 1

1

你已经很接近了,你只需要打电话acc_addition而不是addition最后一步。从语法上讲,您还需要一个inforlet语句:

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

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

于 2019-04-03T21:30:31.287 回答