Brand Objects for Nominal Typing

Authors Timothy Jones, Michael Homer, James Noble

Thumbnail PDF


  • Filesize: 0.54 MB
  • 24 pages

Document Identifiers

Author Details

Timothy Jones
Michael Homer
James Noble

Cite AsGet BibTex

Timothy Jones, Michael Homer, and James Noble. Brand Objects for Nominal Typing. In 29th European Conference on Object-Oriented Programming (ECOOP 2015). Leibniz International Proceedings in Informatics (LIPIcs), Volume 37, pp. 198-221, Schloss Dagstuhl – Leibniz-Zentrum für Informatik (2015)


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.
  • brands
  • types
  • structural
  • nominal
  • Grace


  • Access Statistics
  • Total Accesses (updated on a weekly basis)
    PDF Downloads


  1. Martin Abadi. Baby Modula-3 and a theory of objects. Journal of Functional Programming, 4(2):249-283, 1994. Google Scholar
  2. Martin Abadi and Luca Cardelli. A Theory of Objects. Springer-Verlag, New York, 1996. Google Scholar
  3. Nada Amin, Tiark Rompf, and Martin Odersky. Foundations of path-dependent types. In OOPSLA, 2014. Google Scholar
  4. Henk Barendregt. The Lambda Calculus. North-Holland, revised edition, 1984. Google Scholar
  5. G. M. Birtwistle, O. J. Dahl, B. Myhrhaug, and K. Nygaard. Simula Begin. Studentlitteratur, 1979. Google Scholar
  6. Andrew P. Black, Kim B. Bruce, Michael Homer, and James Noble. Grace: the absence of (inessential) difficulty. In Onward!, pages 85-98, 2012. Google Scholar
  7. Andrew P. Black, Kim B. Bruce, Michael Homer, James Noble, Amy Ruskin, and Richard Yannow. Seeking Grace: a new object-oriented language for novices. In SIGCSE, pages 129-134, 2013. Google Scholar
  8. Andrew P. Black, Kim B. Bruce, and James Noble. The Grace programming language (draft specification version 0.3.1303)., 2013.
  9. Andrew P. Black, Eric Jul, Norman Hutchinson, and Henry M. Levy. The development of the Emerald programming language. In History of Programming Languages III. ACM Press, 2007. Google Scholar
  10. Andrew P. Black and Jens Palsberg. Foundations of object-oriented languages - workshop report. SIGPLAN Notices, 29(3):3-11, 1994. Google Scholar
  11. John Tang Boyland. The problem of structural type tests in a gradual-typed language. In FOOL, New York, NY, USA, 2014. ACM. Google Scholar
  12. Gilad Bracha. The Strongtalk type system for Smalltalk. In OOPSLA Workshop on Extending the Smalltalk Language, 1996. Google Scholar
  13. Gilad Bracha. Pluggable Type Systems. OOPSLA workshop on revival of dynamic languages, 2004. Google Scholar
  14. Gilad Bracha and David Griswold. Strongtalk: Typechecking Smalltalk in a production environment. In OOPSLA, 1993. Google Scholar
  15. Kim B. Bruce. A paradigmatic object-oriented programming language: design, static typing and semantics. Journal of Functional Programming, 4(2):127-206, 1994. Google Scholar
  16. Kim B. Bruce. Foundations of Object-Oriented Languages: Types and Semantics. MIT Press, 2002. Google Scholar
  17. L. Cardelli and P. Wegner. On understanding types, data abstraction, and polymorphism. Computing Surveys, 17(4):471-522, 1985. Google Scholar
  18. Luca Cardelli, James E. Donahue, Mick J. Jordan, Bill Kalsow, and Greg Nelson. The Modula-3 type system. In POPL, pages 202-212, 1989. Google Scholar
  19. William R. Cook. On understanding data abstraction, revisited. In OOPSLA, 2009. Google Scholar
  20. William R. Cook, Walter L. Hill, and Peter S. Canning. Inheritance is not subtyping. In Proc. 17th ACM Symp. on Principles of Programming Languages, pages 125-135, 1990. Google Scholar
  21. Vincent Cremet, François Garillot, Sergueï Lenglet, and Martin Odersky. A core calculus for Scala type checking. In MFCS, pages 1-23, 2006. Google Scholar
  22. Haskell B. Curry and Robert Feys. Combinatory Logic, volume 1. North-Holland, 1958. Google Scholar
  23. M. Furr, J.-H. An, J. Foster, and M.J. Hicks. Static type inference for Ruby. In SAC, pages 1859-1866, 2009. Google Scholar
  24. Joseph Gil and Itay Maman. Whiteoak: Introducing structural typing into Java. In OOPSLA, 2008. Google Scholar
  25. Neal Glew. Type dispatch for named hierarchical types. In ICFP, New York, NY, USA, 1999. ACM. Google Scholar
  26. Michael Homer, Timothy Jones, James Noble, Kim B. Bruce, and Andrew P. Black. Graceful dialects. In ECOOP, pages 131-156, 2014. Google Scholar
  27. Michael Homer, James Noble, Kim B. Bruce, Andrew P. Black, and David J. Pearce. Patterns as objects in Grace. In DLS, New York, NY, USA, 2012. ACM. Google Scholar
  28. Waldemar Horwat and Mark Miller. ES6 Strawman: Trademarks., 2011.
  29. Timothy Jones and James Noble. Tinygrace: A simple, safe and structurally typed language. In FTFJP. ACM, New York, NY, USA, 2014. Google Scholar
  30. Joseph Lee, Jonathan Aldrich, Troy Shaw, and Alex Potanin. A theory of tagged objects. In ECOOP, 2015. Google Scholar
  31. Xavier Leroy, Damien Doligez, Alain Frisch, Jacques Garrigue, Didier Rémy, and Jérôme Vouillon. The OCaml system release 3.12 documentation and user’s manual, 2011. Google Scholar
  32. Donna Malayeri and Jonathan Aldrich. Integrating nominal and structural subtyping. In ECOOP, 2008. Google Scholar
  33. Donna Malayeri and Jonathan Aldrich. Is structural subtyping useful? An empirical study. In ESOP, 2009. Google Scholar
  34. John C. Mitchell and Gordon D. Plotkin. Abstract types have existential type. TOPLAS, 10(3), 1988. Google Scholar
  35. Greg Nelson, editor. Systems Programming with Modula-3. Prentice-Hall, 1991. Google Scholar
  36. Martin Odersky. The Scala Language Specification: Version 2.9. Programming Methods Laboratory, EPFL, Switzerland, 2011. Google Scholar
  37. Martin Odersky, Vincent Cremet, Christine Röckl, and Matthias Zenger. A nominal theory of objects with dependent types. In ECOOP, pages 201-224, 2003. Google Scholar
  38. Jens Palsberg and Michael I. Schwartzbach. Object-Oriented Type Systems. John Wiley & Sons, Chichester, 1994. Google Scholar
  39. Benjamin C. Pierce. Types and Programming Languages. MIT Press, 2002. Google Scholar
  40. Benjamin C. Pierce and David N. Turner. Simple type-theoretic foundations for object-oriented programming. Journal of Functional Programming, 4:207-247, 1994. Google Scholar
  41. Rob Pike and The Go Team. The Go programming language specification., 2014.
  42. Craig Schaffert, Topher Cooper, Bruce Bullis, Mike Kilian, and Carrie Wilpolt. An introduction to Trellis/OWL. In OOPSLA, 1986. Google Scholar
  43. Sam Tobin-Hochstadt and Matthias Felleisen. The design and implementation of Typed Scheme. In POPL, 2008. Google Scholar
  44. Christian Urban, Stefan Berghofer, and Michael Norrish. Barendregt’s variable convention in rule inductions. In CADE, pages 35-50, 2007. Google Scholar
Questions / Remarks / Feedback

Feedback for Dagstuhl Publishing

Thanks for your feedback!

Feedback submitted

Could not send message

Please try again later or send an E-mail