Por qué abandoné los tipos unión en Copper y me quedé con los tipos opcionales
Union Types and Option Types

El autor de Copper, un lenguaje de bajo nivel, probó tipos unión y descubrió que añadían demasiada complejidad al compilador. Al final se decantó por los tipos opcionales (T?), que reservan un valor centinela en cada tipo para representar nil. Explica el operador `as` para refinar el tipo, el `or else` para retornos tempranos y por qué el análisis de nulabilidad al estilo TypeScript o Kotlin no le convenció. La pregunta final: ¿merece la pena complicar un lenguaje minimalista?
El tipo opcional, a pesar de ser más simple que el tipo unión, introduce muchos conceptos nuevos y requiere conocimientos adicionales que hacen el lenguaje más complejo.
- ks2048
¿Cuál es la mejor fuente para una descripción entre lenguajes de las características de los lenguajes? Por ejemplo: "tipos opcionales": qué lenguajes los tienen y cómo funcionan. Lo mismo con "tipos unión", etc.
- p1necone
Un truco simple pero no obvio (al menos para mí) al implementar uniones etiquetadas: coloca el discriminador/etiqueta de la unión al final, no al principio; de esa forma, un puntero a una unión también es un puntero al valor, sin necesidad de incrementar el puntero para apuntar más allá de la etiqueta después de discriminar.
- gnabgib
(2025) Y sobre CopperLang (203 puntos, hace 3 días, 120 comentarios) https://news.ycombinator.com/item?id=50308754