A Simple and General Theoretical Account for Abstract Types

  • Hongwei Xi
Part of the Lecture Notes in Computer Science book series (LNCS, volume 5902)

Abstract

A common approach to hiding implementation details is through the use of abstract types. In this paper, we present a simple theoretical account of abstract types that make use of a recently developed notion of conditional type equality. This is in contrast to most of the existing theoretical accounts of abstract types, which rely on existential types (or similar variants). In addition, we show that this new approach to abstract types opens a promising avenue to the design and implementation of module systems that can effectively support large-scale programming.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. [CDJ+89]
    Cardelli, L., Donahue, J., Jordan, M., Kalso, B., Nelson, G.: The Modula-3 Type System. In: Proceedings of 16th Annual ACM Symposium on Principles of Programming Languages (POPL 1989), Austin, TX, January 1989, pp. 202–212 (1989)Google Scholar
  2. [CHP99]
    Crary, K., Harper, R., Puri, S.: What is a recursive module? In: SIGPLAN Conference on Programming Language Design and Implementation (PLDI 1999), June 1999, pp. 56–63 (1999)Google Scholar
  3. [CL90]
    Cardelli, L., Leroy, X.: Abstract Types and the Dot Notation. Technical Report 56, DEC SRC (1990)Google Scholar
  4. [DCH03]
    Dreyer, D., Crary, K., Harper, R.: A Type System for Higher-Order Modules. In: Proceedings of 30th Annual ACM SIGPLAN Symposium on Principles of Programming Languages (POPL 2003), New Orleans, LA, January 2003, pp. 236–249 (2003)Google Scholar
  5. [GHW85]
    Guttag, J.V., Horning, J.J., Wing, J.M.: The Larch Family of Specification Languages. IEEE Software 2(5), 24–36 (1985)CrossRefGoogle Scholar
  6. [HL94]
    Harper, R.W., Lillibridge, M.: A type-theoretic approach to higher-order modules with sharing. In: Proceedings of 21st Annual ACM SIGPLAN Symposium on Principles of Programming Languages (POPL 1994), Portland, Oregon, pp. 123–137 (1994)Google Scholar
  7. [Ler94]
    Leroy, X.: Manifest Types, Modules, and Separate Compilation. In: Proceeding of 21st Annual ACM Conference on Principles of Programming lanugages (POPL 1994), Porland, OR (January 1994)Google Scholar
  8. [Ler95]
    Leroy, X.: Aplicative functors and fully transparent higher-order modules. In: Proceedings of 22nd ACM SIGPLAN Symposium on Principles of Programming Languages (POPL 1995), San Francisco, CA, January 1995, pp. 142–153 (1995)Google Scholar
  9. [Lil97]
    Lillibridge, M.: Translucent Sums: A Foundation for Higher-Order Module Systems. Ph. D. dissertation, Carnegie Mellon University (May 1997)Google Scholar
  10. [Lis86]
    Liskov, B.: Abstraction and Specification in Program Development. MIT Press, Cambridge (1986)MATHGoogle Scholar
  11. [Mac86]
    MacQueen, D.B.: Using Dependent Types to Express Modular Structure. In: Proceeding of 13th Annual ACM Symposium on Principles of Programming Languages, St. Petersburg Beach, FL, pp. 277–286 (1986)Google Scholar
  12. [MP85]
    Mitchell, J.C., Plotkin, G.D.: Abstract types have existential type. In: Proceedings of 12th Annual ACM Symposium on Principles of Programming Languages (POPL 1985), New Orleans, Louisiana, pp. 37–51 (1985)Google Scholar
  13. [MP88]
    Mitchell, J.C., Plotkin, G.D.: Abstract types have existential type. ACM Transactions on Programming Languages and Systems 10(3), 470–502 (1988)CrossRefGoogle Scholar
  14. [MTHM97]
    Milner, R., Tofte, M., Harper, R.W., MacQueen, D.: The Definition of Standard ML (Revised). MIT Press, Cambridge (1997)Google Scholar
  15. [Rus00]
    Russo, C.V.: First-Class Structures for Standard ML. Nordic Journal of Computing 7(4), 348–374 (2000)MATHMathSciNetGoogle Scholar
  16. [Rus01]
    Russo, C.V.: Recursive Structures for Standard ML. In: Proceedings of International Conference on Functional Programming, September 2001, pp. 50–61 (2001)Google Scholar
  17. [SG90]
    Sheldon, M.A., Gifford, D.K.: Static Dependent Types for First-Class Modules. In: Proceedings of ACM Conference on Lisp and Functional Programming, pp. 20–29 (1990)Google Scholar
  18. [SJ02]
    Shields, M., Jones, S.P.: First-class modules for haskell. In: Proceedings of 9th International Workshop on Foundations of ObjectOriented Languages (FOOL 9), Portland, OR (January 2002)Google Scholar
  19. [Wir82]
    Wirth, N.: Programming with Modula-2. Texts and Monographs in Computer Science. Springer, Heidelberg (1982)Google Scholar
  20. [XCC03]
    Xi, H., Chen, C., Chen, G.: Guarded Recursive Datatype Constructors. In: Proceedings of the 30th ACM SIGPLAN Symposium on Principles of Programming Languages, New Orleans, LA, pp. 224–235. ACM press, New York (2003)CrossRefGoogle Scholar
  21. [Xi]
    Xi, H.: The ATS Programming Language, http://www.ats-lang.org/
  22. [Xi98]
    Xi, H.: Dependent Types in Practical Programming. PhD thesis, Carnegie Mellon University (1998), viii+181 pp. pp. viii+189, http://www.cs.cmu.edu/~hwxi/DML/thesis.ps
  23. [Xi04]
    Xi, H.: Applied Type System (extended abstract). In: Berardi, S., Coppo, M., Damiani, F. (eds.) TYPES 2003. LNCS, vol. 3085, pp. 394–408. Springer, Heidelberg (2004)Google Scholar
  24. [XP99]
    Xi, H., Pfenning, F.: Dependent Types in Practical Programming. In: Proceedings of 26th ACM SIGPLAN Symposium on Principles of Programming Languages, pp. 214–227. ACM Press, San Antonio (1999)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2009

Authors and Affiliations

  • Hongwei Xi
    • 1
  1. 1.Boston University 

Personalised recommendations