Как новичок в функциональных языках (я начал трогать Erlang пару недель назад - первый функциональный язык, на который я мог бы справиться).
Я начал писать небольшие алгоритмы (например, left_rotate_list
, bubble_sort,
merge_sort
и т.д.). Я часто терялся в таких решениях, как "использовать ли хелперный список для промежуточного хранилища результатов"? и "должен ли я создать вспомогательную функцию для этого?"
Через некоторое время я обнаружил, что функциональное программирование (нести меня, если я говорю, не имеет смысла вообще) поощряет "сверху вниз" дизайн: т.е. когда я делаю merge_sort, вы сначала записываете все слияние шаги сортировки и назовите их как отдельные вспомогательные функции; и затем вы реализуете эти вспомогательные функции один за другим (и если вам нужно дополнительно разделить эти вспомогательные функции, сделайте это в том же подходе).
Это, по-видимому, немного противоречит дизайну OO, в котором вы можете начать снизу, чтобы построить основную структуру данных, а затем собрать структуру данных и алгоритмы в то, что вы хотите.
Спасибо за комментарии. Да, я хочу получить совет о том, как "думать в функциональном языке" (как "мышление в Java", "мышление в С++" ).