gpt4 book ai didi

haskell - 是否有像 iterate 这样的标准 Haskell 函数停止为 Nothing?

转载 作者:行者123 更新时间:2023-12-03 22:28:26 24 4
gpt4 key购买 nike

我想知道是否有一个标准函数可以迭代一个函数,该函数在初始值上返回一个(Maybe 值),收集列表中的值,但当它变为 Nothing 时结束该列表。这个函数可以像这样实现:

iterateMaybe f a = a : iterMaybe (f a) where
iterMaybe Nothing = []
iterMaybe (Just a) = a : iterMaybe (f a)

或略有不同,如下所示:
iterateMaybe' f Nothing = []
iterateMaybe' f (Just a) = a : iterateMaybe' f (f a)

the functions that Hoogle finds 都没有比赛。

最佳答案

这是 unfoldr 的特例.

iterateMaybe f = unfoldr (fmap (\s -> (s,s)) . f)

不同之处在于 unfoldr 返回的列表不会包含初始元素。

关于haskell - 是否有像 iterate 这样的标准 Haskell 函数停止为 Nothing?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35749318/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com