Estoy diseñando un lenguaje de programación funcional simple mecanografiado como una experiencia de aprendizaje.
Parece que el sistema de tipos que he implementado hasta ahora podría (con un poco de trabajo extra) incorporar tipos de intersección y unión, por ejemplo, podría tener:
<Union String Integer>
<Union Integer Foo>
- La intersección de los dos tipos anteriores sería simple
Integer
- La unión de los dos tipos sería
<Union String Integer Foo>
El hecho de que esto sea posible, por supuesto, no necesariamente significa que sea una buena idea de diseño. En particular, estoy algo preocupado por las dificultades de implementación de mantener los tipos disjuntos y / o el manejo de superposiciones.
¿Cuáles son las ventajas y desventajas de incorporar tales características en el sistema de tipos?