我最近注意到,我经常编写一些函数,这些函数只是迭代另一个函数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 似乎没有返回有用的结果。 - Daenythuntil :: (a -> Bool) -> (a -> a) -> a -> a
。until p f
产生应用 f 直到 p 成立的结果。似乎你可以使用它编写你的函数,但仍需要Eq
约束。 - Daenyth