我有一些代码可以反复接近一个解决方案,它实际上做的并不重要,但它通过改变mg(m猜测,从4.0开始因为我"知道"它应该在球场中)而对r'== rt有效. .
solve_m f ar st qt = solve_m' f ar st qt 4.0
where
solve_m' f ar st qt mg
| rd > precis = f' (mg - sf)
| rd < (-precis) = f' (mg + sf)
| otherwise = mg
where
f' = solve_m' f ar st qt
rt = st + qt
r' = f st ar mg
rd = rt - r'
sf = abs(rd)
Run Code Online (Sandbox Code Playgroud)
我想要做的是计算周期数,我知道正确的方法是使用State monad,但是最优雅的方法是将put/get放入这样的函数中?让f'成为阻止?或者只是添加一个计数器solve_m'并返回(counter,mg)?
谢谢!
编辑:这似乎基本上是我想要的,没有必要的Monads:
solve_m f ar st qt …Run Code Online (Sandbox Code Playgroud) haskell ×1