Type inference, principal typings, and let-polymorphism for first-class mixin modules

Henning Makholm, J.B. Wells

    Research output: Contribution to journalConference articleResearchpeer-review

    Abstract

    A mixin module is a programming abstraction that simultaneously generalizes lambda-abstractions, records, and mutually recursive definitions. Although various mixin module type systems have been developed, no one has investigated principal typings or developed type inference for first-class mixin modules, nor has anyone added Milner's let-polymorphism to such a system. This paper proves that typability is NP-complete for the naive approach followed by previous mixin module type systems. Because a lambda-calculus extended with record concatenation is a simple restriction of our mixin module calculus, we also prove the folk belief that typability is NP-complete for the naive early type systems for record concatenation. To allow feasible type inference, we present Martini, a new system of simple types for mixin modules with principal typings. Martini is conceptually simple, with no subtyping and a clean and balanced separation between unification-based type inference with type and row variables and constraint solving for safety of linking and field extraction. We have implemented a type inference algorithm and we prove its complexity to be O(n(2)), or O(n) given a fixed bound on the number of field labels.' To prove the complexity, we need to present an algorithm for row unification that may have been implemented by others, but which we could not find written down anywhere. Because Martini has principal typings, we successfully extend it with Milner's let-polymorphism.
    Original languageEnglish
    JournalACM SIGPLAN Notices
    Volume40
    Issue number9
    Pages (from-to)156-167
    ISSN0362-1340
    DOIs
    Publication statusPublished - 2005
    Event10th ACM SIGPLAN International Conference on Functional Programming - Tallinn, Estonia
    Duration: 26 Sep 200528 Sep 2005
    Conference number: 10

    Conference

    Conference10th ACM SIGPLAN International Conference on Functional Programming
    Number10
    CountryEstonia
    CityTallinn
    Period26/09/200528/09/2005

    Keywords

    • type systems
    • record concatenation
    • polymorphism
    • row unification
    • theory
    • algorithms
    • mixin modules
    • design

    Cite this