haskell - 在 haskell 中翻译 while ( x < SomeTreshold )

标签 haskell

在实现算法时,经常会发生这样的情况:您在 while 循环的每次迭代中检查某个变量是否小于某个阈值。

在命令式语言中,它看起来像:

 while ( x < TRESHOLD ) {
      x = usefullStuff();
 }

当然有用的东西正在以某种方式影响 x...

如何利用函数式编程范例将此构造转换为 haskell?

最佳答案

尽管我不知道你的程序是做什么的,但我有一种感觉,你会想要稍微不同地构建你的逻辑。看看论文的第 4 节 Why Functional Programming Mattes - 一些想法。它处理类似的情况,涉及使用牛顿法求方程的根。在那里,职责被划分,以便循环逻辑与逐次逼近的生成分离。

如果 usefulStuff 是一个 monad - 即具有副作用的函数,则必须使用如下内容:

whileLoop x
  | x < THRESHOLD = return x
  | otherwise     = do x <- usefulStuff
                       whileLoop x

关于haskell - 在 haskell 中翻译 while ( x < SomeTreshold ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13654328/

相关文章:

string - 数据.文本与字符串

haskell - seq 函数和严格性

function - Haskell showFFloat 的第三个参数

haskell 错误 - 输入 '=' 上的解析错误

Haskell 见解

multithreading - Haskell 工作池

haskell - 对 Maybe 值列表进行操作

haskell - Haskell 中的简单算术

haskell - seq在haskell中代表什么

exception - 如果 thunk 导致异常,异常是否会保留为 thunk 的结果?