We describe a novel application of subtyping in which a small orthogonal set of structural subtyping rules are used to capture the notion of scaling—an unusual variety of polymorphism found in APL-like languages which is attracting renewed interest due to its applications in data parallel programming. The subtyping approach allows us to provide a simple coercion-based semantics for an orthogonal interpretation of scaling whose generality goes well beyond what is available in APL dialects. Moreover, the results are independent of the structure to which scaling is applied—they apply equally well to lists, vectors, trees, or to any other structure usable for representing sets.
Read full abstract