Myślę, że jedną rzeczą, na którą prawdopodobnie natrafisz, jest coś, na co wpadłem również podczas nauki programowania funkcjonalnego, to znaczy, że dzięki programowaniu funkcjonalnemu możesz (i prawie musisz) myśleć / pracować na wyższym poziomie niż w przypadku programowania imperatywnego.
Wydaje mi się, że to, co wydaje się mniej wyraziste, jest w rzeczywistości bardziej wyraziste: nie musisz opisywać każdego najmniejszego szczegółu i możesz zrobić więcej przy mniejszym kodowaniu w programowaniu funkcjonalnym - masz więcej mocy do pisania.
Na przykład, mógłbym napisać koniecznie:
for each (Person person in people)
print(person.name)
który jest całkowicie czytelny jako angielski.
Wersja Haskell może być (i to nie jest prawidłowy Haskell, ale służy jedynie do porównania składniowego):
map (print . name) people
co wymaga mniej kodu i mniej szczegółowego przekręcania - nie muszę rozkładać rzeczy na pętlę i jej zmienne () zmienne for each (...)
, map
funkcja zajmuje się tym za mnie.
Praca na tym poziomie może zająć trochę czasu. Jeśli to pomoże, Haskell był prawdopodobnie najtrudniejszym momentem w nauce nowego języka, odkąd zacząłem programować, i znam> 10 języków (w tym Lisp). Warto było się jednak nauczyć.