Porady dotyczące nauki „Jak myśleć funkcjonalnie”?

Jako nowicjusz w funkcjonalnych językach (zacząłem dotykać Erlang kilka tygodni temu - pierwszy język funkcjonalny, w który mogłem się dostać).

Zacząłem pisać małe algorytmy (takie jakleft_rotate_list, bubble_sort, merge_sort itp.). Znalazłem się często zagubiony w decyzjach takich jak „czy powinienem używać listy pomocników do przechowywania wyników pośrednich?” i „czy powinienem utworzyć funkcję pomocnika, aby to zrobić?”

Po jakimś czasie odkryłem, że programowanie funkcjonalne (radzę sobie ze mną, jeśli to, o czym mówię, nie ma sensu) zachęca do projektowania „z góry na dół”: tj. Kiedy robię merge_sort, najpierw zapisujesz wszystkie kroki sortowania korespondencji seryjnej, i nazwij je jako indywidualne funkcje pomocnicze; a następnie zaimplementujesz te funkcje pomocnicze pojedynczo (a jeśli potrzebujesz dalszego podziału tych funkcji pomocniczych, zrób to w ten sam sposób).

To wydaje się przeczyć trochę projektowi OO, w którym można zacząć od dołu, aby zbudować podstawową strukturę danych, a następnie zebrać strukturę danych i algorytmy w to, co chcesz.

Dzięki za komentarze. Tak, chcę uzyskać poradę, jak „myśleć w języku funkcjonalnym” (tak jak „myślenie w Javie”, „myślenie w C ++”).

questionAnswers(5)

yourAnswerToTheQuestion