How to call the same function ‘n’ times? [duplicate]

iterate is a common solution:

> :t iterate
iterate :: (a -> a) -> a -> [a]

So, given a function with a domain the same as its range, a -> a, and an initial input a, produce an infinite list of results in the form:

iterate f a --> [a, f(a), f(f(a)), ...]

And you can access the nth element of the list using !!:

iterate f a !! n

NB iterate f a !! 0 == a.

Leave a Comment