使用State monad或递归传递状态更好吗?

fad*_*bee 9 monads haskell state-monad

我只是在学习Haskell,并试图找出实现视线算法的最惯用的方法.

我发现的演示代码使用状态monad,但对我来说(我只是初学者)递归传递状态似乎更简单.我在这里错过了什么?有性能问题吗?

查找代码:http://www.finalcog.com/bresenham-algorithm-idiomatic-haskell

谢谢,

克里斯.

Mac*_*cke 12

在任何地方传递状态都会变得有点冗长.此外,状态monad是大多数haskell编码器所熟知的,所以他们会知道你在做什么.如果您在monad之外手动滚动自己,那么辨别代码的作用可能会很棘手.

我发现状态monad整齐地用于封装状态变化,很明显你的代码的哪一部分是有状态的(即改变或依赖于状态)和其他纯粹的东西.


Don*_*art 11

对于较大的程序,最好隐藏monad中通过管道的状态.那么错误的风险就更小了.