Изучайте Haskell во благо (раздел «Функции высшего порядка», подраздел "Некоторый высший порядок в порядке") описывает пример функции applyTwice
, которая дважды вызывает функцию для аргумента:
applyTwice :: (a -> a) -> a -> a
applyTwice f x = f (f x)
Но мне нужна функция, которая применяет некоторую функцию к некоторому аргументу произвольное количество раз. Например, applyN 3 f x
будет эквивалентно f $ f $ f x
. Как бы я написал функцию повторного применения в Haskell? Пожалуйста, опубликуйте любые возможные решения, используя рекурсию, функции более высокого порядка или что-то еще.