Alternatives to providing context can be discussed in terms of binding time. In general, binding times fall into three general categories; concept definition time, system build time, and run time.
A non-generic sort procedure is an example of a component whose conceptual context is bound at concept definition time, and our generic sort procedure binds conceptual context at system build time. The earlier a contextual parameter is bound, the more invariant it is with respect to our ability to provide a concept for it. Invariant context is therefore defined with respect to a given binding time, and it contributes to the ability of the system builder to make contextual choices at that time.
It is important to note that if generics are allowed to be partially instantiated and/or instantiated with actual parameters which themselves are generic formals, then the notion of "system build time" blurs somewhat. In this case "system" becomes either an actual implementation or a generic architecture.
It is also possible to delay the binding of conceptual context to run-time. Methods to do so include the use of procedure and package types and are explored in [Lato 90],