Por curiosidad, ¿hay idiomas que le permitan establecer aritmética en tipos para crear nuevos 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()
Sé que en algunos idiomas estas ideas se pueden expresar (es decir, Java tiene List<Comparable & Serializable>
para la unión de las interfaces) pero nunca he oído hablar de un lenguaje que admita aritmética de tipos. ¡Gracias!
CanWriteAndCompare extends Serializable, Comparable {}
) y estaba pensando en cómo generalizar esto.
A
o una B
, con dos implementaciones que se ven exactamente iguales. En el método, estoy llamando a un método polimórfico que puede tomar un A
o a B
, por lo que las implementaciones son las mismas, pero como tengo que tomar dos tipos distintos, necesito dos implementaciones. Esto sería más fácil si pudiera hacerlo myMethod(A | B aOrB)
.
Or
La operación puede ser emulada por herencia múltiple.