Relacje.
Przyjaciel: Biorąc pod uwagę dwie osoby, związek z przyjacielem jest zgodny z tymi ogólnymi prawami
- Miejcie dobrą wolę wobec siebie
- Myślą, że są dla nich przyjacielem (więc obaj członkowie muszą przestrzegać praw w tym związku)
- Lubi spędzać czas ze sobą
Monoid: Biorąc pod uwagę wiele przedmiotów i funkcję, która przyjmuje 2 przedmioty i zwraca 1, związek monoidalny jest zgodny z tymi ogólnymi prawami
- Jest jeden z tych elementów (tylko jeden, zwany tożsamością), który przekazano do funkcji z dowolnym innym elementem, zapewni, że funkcja zawsze zwróci drugi element (0 + 1 = 1, zatem 0 to tożsamość, gdy elementy są liczbami, a funkcja jest dodatkiem)
- Funkcja nie może działać na elementach spoza zestawu, z którymi ma związek monoidalny, ani na nie zwracać
- Funkcja jest asocjacyjna i może być używana z elementami w sposób nieco niezależny od porządku, co oznacza a * (b * c) = (a * b) * c, co oznacza, że możesz pomnożyć a przez wynik b * c lub c przez wynik a * b, a wynik będzie taki sam, niezależnie od tego, co zrobisz najpierw.
Programowanie funkcjonalne polega na uogólnianiu, przyjaciel jest bardzo ogólną relacją, którą można zaobserwować w wielu scenariuszach, ale we wszystkich różnych formatach ogólnie jest zgodny z powyższymi prawami.
Uznając prawa rządzące relacjami między rzeczami, możesz tworzyć ogólne implementacje, które działają na dowolnym formacie rzeczy, które mają ten rodzaj relacji. W programowaniu funkcjonalnym próbujesz zidentyfikować relacje między rzeczami, aby można je było ogólnie klasyfikować i traktować.
Chcesz metaforę z prawdziwego świata? Spójrz, jak rzeczy są powiązane i spróbuj zidentyfikować ogólne prawa (jak w przypadku wielu scenariuszy, w których rzeczy inne niż przepisy mogą się różnić). Istnieje związek między urzędnikiem rejestrującym a klientem w sklepie, ma on pewne ogólne prawa, opracowano oprogramowanie ułatwiające osiągnięcie celów ludzi w tym ogólnym związku na drodze systemów POS. Podobnie, gdy zaczniesz widzieć te ogólne prawa dyktujące, jak rzeczy są powiązane, możesz zacząć polegać na prawach tych relacji podczas pisania oprogramowania, a nie na konkretnych szczegółach wystąpienia relacji.