Repeat function application x times?

Is there a convenient stock function in prelude/base that applies a function to a single value x number of times and returns the result? (I.e., does not return a list, but the final value.) Something like applyN :: Integral b => (a -> a) -> b -> a -> a Honestly I looked through the base hierarchy and at hoogle but I am missing it. -- frigidcode.com theologia.indicium.us

On Fri, Jul 22, 2011 at 10:11:39PM -0800, Christopher Howard wrote:
Is there a convenient stock function in prelude/base that applies a function to a single value x number of times and returns the result? (I.e., does not return a list, but the final value.) Something like
applyN :: Integral b => (a -> a) -> b -> a -> a
Honestly I looked through the base hierarchy and at hoogle but I am missing it.
I'm not sure there is one, but it's rather simple to build one out of `iterate` and `!!`. /M -- Magnus Therning OpenPGP: 0xAB4DFBA4 email: magnus@therning.org jabber: magnus@therning.org twitter: magthe http://therning.org/magnus Most software today is very much like an Egyptian pyramid with millions of bricks piled on top of each other, with no structural integrity, but just done by brute force and thousands of slaves. -- Alan Kay

Christopher Howard
Is there a convenient stock function in prelude/base that applies a function to a single value x number of times and returns the result? (I.e., does not return a list, but the final value.) Something like
applyN :: Integral b => (a -> a) -> b -> a -> a
Honestly I looked through the base hierarchy and at hoogle but I am missing it.
No, but it's easy to define: applyN :: Int -> (a -> a) -> a -> a applyN n = foldl (.) id . replicate n Greets, Ertugrul -- nightmare = unsafePerformIO (getWrongWife >>= sex) http://ertes.de/

It's straightforward to define it using iterate: applyN :: (a -> a) -> Int -> a -> a applyN f n x = iterate f x !! n Cheers, -- Felipe.
participants (4)
-
Christopher Howard
-
Ertugrul Soeylemez
-
Felipe Almeida Lessa
-
Magnus Therning