Haskell 中 until 函数怎么用呀 ?

发布于 2022-08-20 19:12:11 字数 474 浏览 16 评论 4

  1. Prelude> :t until
  2. until :: (a -> Bool) -> (a -> a) -> a -> a
  3. Prelude> until (>4) (+2) 0
  4. 6
  5. Prelude> until (>5) (+2) 0
  6. 6
  7. Prelude> until (>6) (+2) 0
  8. 8
  9. Prelude> until (>7) (+2) 0
  10. 8
  11. Prelude> until (>8) (+2) 0
  12. 10

复制代码
只知 until 是一个循环函数
试验了一把,还是看不出怎么用,不知其计算流程
它等同的 c 语言代码是什么呀?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

瑾夏年华 2022-08-22 06:37:58

interate 类似 mathematica 中的 NestList,但后者需指定次数

NestList[f, x, 3]

{x, f[x], f[f[x]], f[f[f[x]]]}

而 until 则类似 mathematica 中的 NestWhile 或 FixedPoint

NestWhile[# + 2 & , 0, # <= 8 &]

10

FixedPoint[# + 2 &, 0, SameTest -> (#2 > 8 &)]

10

九命猫 2022-08-22 03:57:43

嗯,我表达的不准确

其实我想说的是:两者都有 f (f x) 部分

[ 本帖最后由 izhier 于 2009-4-22 18:43 编辑 ]

永不分离 2022-08-21 05:41:41

原帖由 izhier 于 2009-4-22 13:28 发表
知道了
找到代码了

until          :: (a -> Bool) -> (a -> a) -> a -> a
until p f x     = if p x then x else until p f (f x)

原来是这样
和 iterate 有点相似,只是加了一个条件

返回值完全不同了,而且 p 本身也可以是个很复杂的条件判断。

妥活 2022-08-20 19:49:30

知道了
找到代码了

until          :: (a -> Bool) -> (a -> a) -> a -> a
until p f x     = if p x then x else until p f (f x)

原来是这样
和 iterate 有点相似,只是加了一个条件

iterate          :: (a -> a) -> a -> [a]
iterate f x       = x : iterate f (f x)

[ 本帖最后由 izhier 于 2009-4-22 13:34 编辑 ]

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文