Я хочу создать функцию apply, которая принимает функцию с произвольным количеством аргументов, а также список целых чисел и возвращает результат функции (где каждое целое число в списке является аргументом по порядку.
Я думал что-то вроде:
apply :: ([Int] -> Int) -> [Int] -> Int
apply f x:xs = apply (f x) xs
apply f [] = f
Но я знаю, что это не сработает, потому что сигнатура типа неправильная - функция не принимает список значений, она просто принимает некоторое количество аргументов типа int.
Кроме того, когда я добираюсь до базового случая, аргумент f для применения должен фактически быть целым числом, так или иначе нарушая сигнатуру типа.
Кто-нибудь знает, как бороться с такого рода проблемами?