Функциональное программирование - большой акцент на рекурсию, почему?

Я становлюсь представленным Функциональному программированию [FP] (использующий Scala). Одна вещь, которая прибывает из моего начального приобретения знаний, состоит в том, что кадр/с полагается в большой степени на рекурсию. И также это походит в чистом кадр/с единственный способ сделать, повторяющийся материал путем записи рекурсивных функций.

И из-за тяжелого использования рекурсии кажется следующей вещью, о которой должен был волноваться кадр/с, были StackoverflowExceptions обычно из-за долгих извилистых рекурсивных вызовов. Этим занялись путем представления некоторой оптимизации (связанная с хвостовой рекурсией оптимизация в обслуживании стековых фреймов и @tailrec аннотация от Scala v2.8 вперед)

Кто-то может просветить меня, почему рекурсия так важна для парадигмы функционального программирования? Есть ли что-то в спецификациях языков функционального программирования, которое "нарушено", если мы действительно наполняем многократно? Если да, то я стремлюсь знать это также.

PS: Обратите внимание, что я - новичок к функциональному программированию, так не стесняйтесь указывать на меня на существующие ресурсы, если они объясняют/отвечают мой вопрос. Также я действительно понимаю, что Scala в особенности оказывает поддержку для того, чтобы сделать повторяющийся материал также.

62
задан 30 September 2012 в 11:56

1 ответ

Ради новых учеников FP я хотел бы добавить свои 2 цента. Как упомянуто в некоторых ответах, рекурсия - их для использования неизменных переменных, но почему мы должны сделать это? потому что это помогает запустить программу на нескольких ядрах параллельно, но почему мы хотим это? Разве мы не можем выполнить его в одноядерном и быть счастливыми как всегда, мы были? Нет, потому что содержание для обработки увеличивается день за днем, и цикл Тактовой частоты ЦП не может быть увеличен так значительно, чем добавление большего количества ядер. От прошлого одно десятилетие тактовая частота была вокруг максимум от 2,7 ГГц до 3,0 ГГц для потребительских компьютеров, и разработчики чипов имеют проблемы в установке все большему количеству транзисторов в их. Также FP был их с очень долгого времени, но не взял, поскольку он использовал рекурсию, и память была очень дорогой в те дни, но поскольку тактовые частоты взлетали год за годом, таким образом, сообщество решило продолжить идти с Редактированием ООП: это было довольно быстро, у меня было только несколько минут

1
ответ дан 31 October 2019 в 13:48

Другие вопросы по тегам:

Похожие вопросы: