Sto progettando un semplice linguaggio di programmazione funzionale tipicamente statico come esperienza di apprendimento.
Sembra che il sistema di tipi che ho implementato finora potrebbe (con un po 'di lavoro extra) incorporare tipi di intersezione e unione, ad esempio potresti avere:
<Union String Integer>
<Union Integer Foo>
- L'intersezione dei due tipi sopra sarebbe semplice
Integer
- L'unione dei due tipi sarebbe
<Union String Integer Foo>
Il fatto che ciò sia possibile, ovviamente, non significa necessariamente che sia una buona idea progettuale. In particolare, sono un po 'preoccupato per le difficoltà di implementazione di mantenere i tipi disgiunti e / o gestire le sovrapposizioni.
Quali sono i pro / contro di incorporare tali funzionalità nel sistema di tipi?