Warum ich Union Types aufgab und nur Option Types behielt
Union Types and Option Types

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.
- 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.
- 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.
- gnabgib
(2025) Und über CopperLang (203 Punkte, vor 3 Tagen, 120 Kommentare) https://news.ycombinator.com/item?id=50308754