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.
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.