Ratschläge zum Lernen, wie man funktional denkt

Als Anfänger in funktionalen Sprachen (Ich habe vor ein paar Wochen angefangen, Erlang zu berühren - die erste funktionale Sprache, die ich in die Hände bekommen konnte).

Ich fing an, einige kleine Algorithmen zu schreiben (wieleft_rotate_list, bubble_sort, merge_sort usw.). Ich habe mich oft in Entscheidungen wie "Soll ich eine Hilfsliste zum Speichern von Zwischenergebnissen verwenden?" Verlaufen. und "sollte ich eine Hilfsfunktion erstellen, um dies zu tun?"

Nach einer Weile stellte ich fest, dass die funktionale Programmierung (mit mir zu tragen, wenn das, wovon ich spreche, überhaupt keinen Sinn macht) ein "top down" -Design fördert: dh, wenn ich merge_sort mache, schreiben Sie zuerst alle Sortierschritte für das Zusammenführen auf, und benennen sie als einzelne Hilfsfunktionen; und dann implementieren Sie diese Hilfsfunktionen nacheinander (und wenn Sie diese Hilfsfunktionen weiter unterteilen müssen, tun Sie dies auf die gleiche Weise).

Dies scheint etwas im Widerspruch zum OO-Design zu stehen, bei dem Sie von unten beginnen können, um die grundlegende Datenstruktur zu erstellen, und dann die Datenstruktur und die Algorithmen nach Ihren Wünschen zusammenstellen können.

Danke für Kommentare. Ja, ich möchte Ratschläge zum Thema "Denken in funktionaler Sprache" erhalten (genau wie "Denken in Java", "Denken in C ++").

Antworten auf die Frage(5)

Ihre Antwort auf die Frage