Ich denke, eine Sache, auf die Sie wahrscheinlich stoßen, ist etwas, auf das ich beim Erlernen der funktionalen Programmierung gestoßen bin. Das heißt, dass Sie mit funktionaler Programmierung auf einer höheren Ebene denken / arbeiten können (und fast müssen) als mit imperativer Programmierung.
Was Sie finden , als weniger ausdrucksstark , ich denke , ist eigentlich mehr expressive: Sie müssen nicht jedes kleine Detail darzulegen, und kann mehr mit weniger Code in der funktionalen Programmierung tun - es gibt mehr Kraft auf das, was Sie schreiben.
Zum Beispiel könnte ich unbedingt schreiben:
for each (Person person in people)
print(person.name)
was als Englisch total lesbar ist.
Eine Haskell-Version könnte sein (und dies ist keine gültige Haskell-Version, sondern nur zum syntaktischen Vergleich):
map (print . name) people
Das erfordert weniger Code und weniger Detail-Wrangling. Ich muss die Dinge nicht in eine Schleife und ihre Variablen () aufteilen. for each (...)
Die map
Funktion erledigt das für mich.
Das Arbeiten auf diesem Niveau kann gewöhnungsbedürftig sein. Wenn es hilft, war Haskell wahrscheinlich die schwierigste Zeit, in der ich seit Beginn des Programmierens eine neue Sprache gelernt habe, und ich kenne> 10 Sprachen (einschließlich Lisp). Das Lernen hat sich gelohnt.