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