@inproceedings{BrandObjects-Jones2015,
    title = {Brand Objects for Nominal Typing},
    booktitle = {European Conference on Object-Oriented Programming},
    year = 2015,
    doi = "10.4230/LIPIcs.ECOOP.2015.198",
    url = "https://michael.homer.nz/Publications/ECOOP2015/BrandObjects-Jones2015.pdf",
    author = {Jones, Timothy and Homer, Michael and Noble, James},
    abstract = {
        Combinations of structural and nominal object typing in systems such
        as Scala, Whiteoak, and Unity have focused on extending existing
        nominal, class-based systems with structural subtyping. The typical
        rules of nominal typing do not lend themselves to such an extension,
        resulting in major modifications. Adding object branding to an existing
        structural system integrates nominal and structural typing without
        excessively complicating the type system. We have implemented *brand
        objects* to explicitly type objects, using existing features of the
        structurally typed language Grace, along with a static type checker
        which treats the brands as nominal types. We demonstrate that the
        brands are useful in an existing implementation of Grace, and provide a
        formal model of the extension to the language.
    }
}
