Per curiosità, ci sono lingue che ti consentono di impostare l'aritmetica sui tipi per crearne di nuovi? Qualcosa di simile a:
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()
So che in alcune lingue queste idee possono essere espresse (cioè Java ha List<Comparable & Serializable>per l'unione delle interfacce) ma non ho mai sentito parlare di un linguaggio che supporti l'aritmetica dei tipi. Grazie!
CanWriteAndCompare extends Serializable, Comparable {}) e stavo pensando a come generalizzare questo.
Ao un B, con due implementazioni che sembrano esattamente uguali. Nel metodo sto chiamando un metodo polimorfico che può prendere un Ao un B, quindi le implementazioni sono le stesse, ma poiché devo prendere due tipi distinti ho bisogno di due implementazioni. Sarebbe più facile se potessi farlo myMethod(A | B aOrB).
Orl'operazione può essere emulata per eredità multipla.