JavaScript funkcyjnie. Zrównoważone, pragmatyczne programowanie funkcyjne w JavaScript
Książka
JavaScript funkcyjnie to przegląd zrównoważonego i pragmatycznego programowania funkcyjnego w języku JavaScript.
Programowanie funkcyjne to potężny paradygmat strukturyzacji kodu, który pozwala tworzyć niezawodne, weryfikowalne i czytelne programy. Jeśli kiedykolwiek próbowałeś nauczyć się programowania funkcyjnego, ale zmagałeś się z takimi terminami jak „monada”, matematycznymi koncepcjami, jak teoria kategorii czy symbolami jak ?, nie jesteś sam.
Ta książka omawia najbardziej istotne aspekty programowania funkcyjnego – od czystości funkcji, niemutowalności wartości, kompozycji po przystępne wzorce JavaScript. Zamiast podejścia „wszystko albo nic” – tak częstego w programowaniu funkcyjnym – ta książka uczy, jak ulepszać programy linijka, po linijce.
„Skupiając się na zasadach zamiast terminologii, zyskałem dużo większą pewność w programowaniu i zrozumiałem podstawy programowania funkcyjnego”.
– Hannes Lund, Software Developer
„Mogę powiedzieć z całą pewnością, że książka JavaScript funkcyjnie otworzyła mi oczy”!
– Islam Attrash, JS Engineer
Słowo wstępne ix
Wprowadzenie xi
Misja xii
Rozdział 1. Dlaczego programowanie funkcyjne? 1
Pierwszy rzut oka 2
Zaufanie 4
Komunikacja 5
Czytelność 6
Perspektywa 8
Jak znaleźć równowagę 9
Zasoby 11
Podsumowanie 12
Rozdział 2. Natura funkcji 13
Czym jest funkcja? 13
Wejście funkcji 15
Nazwane argumenty 23
Wyjście funkcji 25
Funkcje z funkcji 30
Składnia 34
Czym jest this? 40
Podsumowanie 44
Rozdział 3. Zarządzanie wejściami funkcji 45
Wszyscy za jednego 45
Dostosowywanie argumentów do parametrów 49
Niektóre teraz, niektóre później 52
Po jednym 59
Kolejność ma znaczenie 69
Bez punktów 73
Podsumowanie 79
Rozdział 4. Złożenie funkcji 80
Wyjście na wejście 80
Złożenie ogólne 87
Przekształcone złożenie 93
Abstrakcja 95
Punkty raz jeszcze 101
Podsumowanie 106
Rozdział 5. Redukowanie efektów ubocznych 107
Efekty na bok, poproszę 107
Dziękuję, raz wystarczy 117
Czysta rozkosz 121
Jest tam lub nie 127
Oczyszczanie 132
Podsumowanie 140
Rozdział 6. Niemutowalność wartości 141
Niemutowalność wartości podstawowych 141
Wartość do wartości 143
Ponowne przypisanie 145
Wydajność 151
Traktowanie wartości 153
Podsumowanie 156
Rozdział 7. Domknięcie a obiekt 158
Zgodność zdań 159
Podobieństwa 160
Dwie drogi rozdzieliły się w lesie… 169
Podsumowanie 179
Rozdział 8. Rekurencja 180
Definicja 181
Deklaratywna rekurencja 187
Stos 190
Zmiana kolejności rekurencji 195
Podsumowanie 203
Rozdział 9. Działania na listach 205
Niefunkcyjne przetwarzanie list 206
Map 206
Filtr 212
Reduce 217
Zaawansowane działania na listach 223
Metoda kontra samodzielna funkcja 230
Poszukiwanie list 235
Łączenie (fuzja) 238
Poza listami 241
Podsumowanie 249
Rozdział 10. Funkcyjność asynchroniczna 250
Czas jako stan 250
Zachłanne kontra leniwe 253
Reaktywne programowanie funkcyjne 254
Podsumowanie 261
Rozdział 11. Składamy wszystko razem 263
Konfiguracja 263
Zdarzenia giełdowe 265
Interfejs użytkownika chronometru giełdowego 268
Podsumowanie 278
Dodatek A. Transdukcja 280
Najpierw – dlaczego 280
Teraz – jak 283
I wreszcie – co 294
Podsumowanie 297
Dodatek B. Skromna monada 299
Typ 300
Luźny interfejs 300
Po prostu monada 301
Maybe 306
Skromnie 308
Podsumowanie 312
Dodatek C. Biblioteki FP 313
Materiał do analizy 313
Ramda (0.23.0) 314
Lodash/fp (4.17.4) 315
Mori (0.3.2) 316
Bonus: FPO 317
Bonus 2: fasy 319
Podsumowanie 322