// Consider two distinct interfacestypeIA=interfaceendtypeIB=interfaceend// And two classes that implement both of the interfacestypeFirst() =interfaceIAinterfaceIBtypeSecond() =interfaceIAinterfaceIB// Now, what implicit upcast should the compiler insert here?// The return type could be either IA, IB or obj, but there is // no _unique_ solution.lettest=if1=1thenFirst()
elseSecond()
type IB
Full name: Script.IB
Multiple items type First = interface IB interface IA new : unit -> First
Full name: Script.First
-------------------- new : unit -> First
type IA
Full name: Script.IA
Multiple items type Second = interface IB interface IA new : unit -> Second