Zurück zur Übersicht

Begriff

Dependent Types

Computer Science Type Theory S4
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.

In Java hast du List. Der Typ weiß nicht, wie lang die Liste ist. list.get(10) -> Laufzeitfehler (IndexOutOfBounds). Dependent Types erlauben Typen, die von Werten abhängen. List <int, 5> (Eine Liste von Integers mit Länge 5). Funktion append: Nimmt List<n> und List<m>. Gibt zurück List<n+m>. Wenn du versuchst, get(10) auf einer List<5> aufzurufen, gibt es einen Compiler-Fehler. "5 ist nicht größer als 10". Die Logik wandert in das Typ-System.

Merksatz: Ein Typensystem, in dem Typen von Werten abhängen können (z. B. "Array der Länge n"), was es ermöglicht, komplexe Invarianten und Korrektheitseigenschaften zur Kompilierzeit zu prüfen.


Quick-Check

  1. Warum hat Java das nicht?
    Zu komplex. Typ-Prüfung wird unentscheidbar (außer man schränkt die Sprache ein). Und Fehlermeldungen sind gruselig ("Cannot unify (n+1) with m").
  2. Zukunft?
    Haskell bekommt langsam Features (Liquid Haskell). Rust hat Const Generics ([T; N]). Wir bewegen uns langsam darauf zu.
  3. Vorteil?
    "If it compiles, it works." Wirklich. Bugs wie Buffer Overflows sind mathematisch unmöglich.