Zurück zur Übersicht

Begriff

Functor

Functional Programming Math S3
2 Quellen 0 Lernpfade 0 Backlinks enriched

Warum wichtig?

Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.

Ein Functor ist einfach ein Container, über den man map aufrufen kann. Eine Kiste, in der was drin ist. Du hast eine Funktion plusEins(x). Du willst sie auf den Inhalt der Kiste anwenden, ohne die Kiste auszupacken. Beispiel 1: Liste [1, 2, 3]. -> map(plusEins) -> [2, 3, 4]. Beispiel 2: Optional (Maybe) Just(5). -> map(plusEins) -> Just(6). Beispiel 3: Promise Future(10). -> map(plusEins) -> Future(11). Alle diese Dinger (Liste, Optional, Promise) sind Functoren.

Merksatz: Ein Datentyp (Container), der eine map-Funktion bereitstellt, um eine Funktion auf den darin enthaltenen Wert anzuwenden, ohne die Struktur des Containers zu ändern.


Quick-Check

  1. Ist ein Set ein Functor?
    In der Theorie ja. In der Praxis oft schwer, weil map den Typ ändern kann, aber ein Set oft sortiert sein muss (was bei Typänderung kaputt gehen kann).
  2. Unterschied zu Monad?
    Jede Monade ist ein Functor. Aber nicht jeder Functor ist eine Monade. Functor kann nur map (einfache Funktion). Monad kann flatMap (Funktion, die wieder eine Kiste zurückgibt).
  3. Klingt abstrakt?
    Ist es. Category Theory ist die abstrakteste Mathe überhaupt. Aber in der Praxis heißt es einfach: "Das Ding hat eine .map() Methode."