【发布时间】:2016-12-21 16:11:23
【问题描述】:
我最近注意到我经常编写的函数只是迭代另一个函数 f 直到它达到一个固定点(例如 f x == x)
我认为这是一个非常笼统的概念,所以我认为可能是内置的。
所以我想知道是否有内置的,或更通用的?
所以我基本上是在寻找这个:
fixedpoint f x= head . dropWhile(\y->y /= f y) $ iterate f x
我在谷歌上搜索时遇到了麻烦,因为每当我的搜索词包含 fixed point 或类似内容时,我才发现对 fix 函数的引用。
【问题讨论】:
-
ghci表示该函数的类型是Eq a => (a -> a) -> a -> a。 Hoogle 似乎没有为该签名返回有用的结果。 -
最接近的是
until :: (a -> Bool) -> (a -> a) -> a -> auntil p f yields the result of applying f until p holds.- 看起来你可以使用它来编写你的函数,但你仍然需要Eq约束 -
@Daenyth 谢谢,我不知道你可以这样使用 hoogle=) 如果你将其添加为答案,我会接受。
标签: haskell fixed-point-iteration