Warum ich Union Types aufgab und nur Option Types behielt

Union Types and Option Types

Warum ich Union Types aufgab und nur Option Types behielt

In Copper, einer minimalistischen Low-Level-Sprache, experimentierte ich mit Union Types und Option Types. Union Types erwiesen sich als zu komplex für den Compiler, besonders der Sonderfall Pointer|Nothing. Option Types (T?) lösen das eleganter: Ein reservierter Wert pro Typ dient als nil, die Verfeinerung erfolgt über den as-Operator oder or else. Ein automatischer Nil-Checker wie in TypeScript oder Kotlin scheiterte an Generizität und Loop-Analyse. Am Ende bleibt die Frage: Ist der Gewinn an Klarheit die zusätzliche Komplexität wert?

Trotz all der Vorteile dieses Ansatzes gab ich auf und kehrte zur vorherigen Lösung zurück.
  1. ks2048

    Was ist die beste Quelle für eine sprachübergreifende Beschreibung von Sprachfeatures? Z. B.: „optional types“: Welche Sprachen haben sie und wie funktionieren sie? Dasselbe mit „union types“ usw.

  2. p1necone

    Ein einfacher, aber nicht offensichtlicher (zumindest für mich) Trick bei der Implementierung von tagged unions: Setze den Union-Diskriminator/Tag ans Ende, nicht an den Anfang – so ist ein Zeiger auf eine Union auch ein Zeiger auf den Wert, und man muss den Zeiger nach dem Unterscheiden nicht inkrementieren, um hinter das Tag zu zeigen.

  3. gnabgib

    (2025) Und über CopperLang (203 Punkte, vor 3 Tagen, 120 Kommentare) https://news.ycombinator.com/item?id=50308754

Mehr von diesem Tag

2026-11-03