> > What I'm suggesting is that once this distinction exists, we acknowledge > its existence in the type system and define our collision requirements and > scopes accordingly. We cannot allow non-lexical anti-collision checks to > manifest at runtime. So if we are going to admit non-lexical anti-collision > requirements, we have to restrict the scope of those items to some unit > that is statically compiled and checked. >
How can one have an interface in a module without admitting the possibility of non-lexical collision? Or is this exactly the point you are making? That we must force compilation units with exported interfaces not to be capable of asserting implementation selection requirements, so those selections can be made at a unit which is lexically and statically checked (and which must not have an interface)? This runs smack into a major common problem in language and runtime design, which is that we overwhelmingly favor the pattern of named-impementation-factory when in most cases conforming-implementation-factory is not only sufficient, but superior.
_______________________________________________ bitc-dev mailing list [email protected] http://www.coyotos.org/mailman/listinfo/bitc-dev
