Projektuję prosty funkcjonalny język programowania o typie statycznym jako sposób uczenia się.
Wygląda na to, że system typów, który do tej pory wdrożyłem, może (przy odrobinie dodatkowej pracy) zawierać typy skrzyżowań i złączy, np. Możesz mieć:
<Union String Integer>
<Union Integer Foo>
- Przecięcie dwóch powyższych typów byłoby równiną
Integer
- Połączenie tych dwóch typów byłoby
<Union String Integer Foo>
Fakt, że jest to możliwe, oczywiście nie musi oznaczać, że jest to dobry pomysł na projekt. W szczególności jestem nieco zaniepokojony trudnościami implementacyjnymi związanymi z utrzymywaniem rozłączności typów i / lub obsługą nakładania się.
Jakie są zalety / wady stosowania takich funkcji w systemie typów?