Monads 如何使用scalaz';ContT monad transformer实现while循环

Monads 如何使用scalaz';ContT monad transformer实现while循环,monads,scalaz,monad-transformers,scalaz7,Monads,Scalaz,Monad Transformers,Scalaz7,我试图理解如何在Scalaz 7中使用ContTmonad转换器以功能性的方式实现while循环,同时防止堆栈溢出。举一个简单的例子来说明ContT的用法将非常有用。我遇到了scalaz'Monad.whileM,而不是使用ContT以函数方式实现while循环。虽然这在总体上看起来效果不错,但我仍然需要解决堆栈安全问题:

我试图理解如何在Scalaz 7中使用
ContT
monad转换器以功能性的方式实现
while
循环,同时防止堆栈溢出。举一个简单的例子来说明
ContT
的用法将非常有用。

我遇到了scalaz'
Monad.whileM
,而不是使用
ContT
以函数方式实现while循环。虽然这在总体上看起来效果不错,但我仍然需要解决堆栈安全问题: