如何在Haskell中将while循环定义为高阶函数?

J.L*_*J.L 0 haskell

我面临以下问题,有人可以给我一些提示吗?非常感谢!

定义高阶函数while,其中条件和操作适用于类型的值a.它的类型应该是

whileG :: (a -> IO Bool) -> (a -> IO a) -> (a ->IO a)
Run Code Online (Sandbox Code Playgroud)

Sat*_*vik 5

在像haskell这样的语言中,你不一定需要循环.如果你这样做那意味着你正试图以强制性的方式实现你的想法,这并不总是正确的事情.

只是为了缩短它,因为我不知道你在做什么,你可以看看循环库,它定义了几个这样的循环.

  • 我不同意Control.Monad.Loops不是"Haskellish"的断言.使用monadic代码时,所有这些函数都非常方便,特别是unfoldM是一种非常"功能"的循环函数. (2认同)