Por curiosidade, existem idiomas que permitem definir aritmética nos tipos para criar novos tipos? Algo como:
interface A {
void a();
void b();
}
interface B {
void b();
void c();
}
interface C = A & B; // has b()
interface D = A | B; // has a(), b() and c()
interface E = (A & B) ^ B; // has c()
Eu sei que em algumas linguagens essas idéias podem ser expressas (isto é, Java possui List<Comparable & Serializable>
para a união das interfaces), mas nunca ouvi falar de uma linguagem que suporte aritmética de tipo. Obrigado!
CanWriteAndCompare extends Serializable, Comparable {}
) e eu estava pensando em como generalizar isso.
A
ou um B
, com duas implementações que parecem exatamente iguais. No método, estou chamando um método polimórfico que pode levar um A
ou um B
, de modo que as implementações são as mesmas, mas como tenho que usar dois tipos distintos, preciso de duas implementações. Isso seria mais fácil se eu pudesse fazer myMethod(A | B aOrB)
.
Or
A operação pode ser emulada por herança múltipla.