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.
A
o un B
, con due implementazioni che sembrano esattamente uguali. Nel metodo sto chiamando un metodo polimorfico che può prendere un A
o 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)
.
Or
l'operazione può essere emulata per eredità multipla.