« first day (54 days earlier)      last day (1170 days later) » 

05:12
Say I have two interfaces, A and B, and a class C that implements both.

1. Should I allow overloading like `fun func(val: A){}`, `fun func(val: B){}`
2. If so, how do I handle `func(new C())`
3. Should I allow generic overloading like `fun func<T>(val: T){}`, `fun func(val: A){}`
4. If so, how do I handle `func(new C())`?

I'd love arguments both ways. My language definitely has a big focus on preventing bugs, but I'd still like it to be usable as well.
5. Do your answers to 1 and 2 change if B extends A?
 
17 hours later…

« first day (54 days earlier)      last day (1170 days later) »