ACM Home Page
Please provide us with feedback. Feedback
Constrained types for object-oriented languages
Full text PdfPdf (281 KB)
Source
Conference on Object Oriented Programming Systems Languages and Applications archive
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications table of contents
Nashville, TN, USA
SESSION: Type systems table of contents
Pages 457-474  
Year of Publication: 2008
ISBN:978-1-60558-215-3
Also published in ...
Authors
Nathaniel Nystrom  IBM Research, Yorktown Heights, NY, USA
Vijay Saraswat  IBM Research, Yorktown Heights, NY, USA
Jens Palsberg  UCLA, Los Angeles, CA, USA
Christian Grothoff  University of Denver, Denver, CO, USA
Sponsors
SIGPLAN: ACM Special Interest Group on Programming Languages
ACM: Association for Computing Machinery
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 29,   Downloads (12 Months): 219,   Citation Count: 1
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1449764.1449800
What is a DOI?

ABSTRACT

X10 is a modern object-oriented language designed for productivity and performance in concurrent and distributed systems. In this setting, dependent types offer significant opportunities for detecting design errors statically, documenting design decisions, eliminating costly run-time checks (e.g., for array bounds, null values), and improving the quality of generated code.

We present the design and implementation of constrained types, a natural, simple, clean, and expressive extension to object-oriented programming: A type C{c} names a class or interface C and a constraint c on the immutable state of C and in-scope final variables. Constraints may also be associated with class definitions (representing class invariants) and with method and constructor definitions (representing preconditions). Dynamic casting is permitted. The system is parametric on the underlying constraint system: the compiler supports a simple equality-based constraint system but, in addition, supports extension with new constraint systems using compiler plugins.


REFERENCES

Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.

1
 
2
 
3
Thorsten Altenkirch, Conor McBride, and James McKinna. Why dependent types matter. http://www.e-pig.org/downloads/ydtm.pdf, April 2005.
4
 
5
David Aspinall and Martin Hofmann. Dependent Types, chapter 2. In Pierce {52}, 2004.
6
 
7
Clark Barrett and Sergey Berezin. CVC Lite: A new implementation of the cooperating validity checker. In Rajeev Alur and Doron A. Peled, editors, Proceedings of the $16^th$ International Conference on Computer Aided Verification (CAV '04), volume 3114 of Lecture Notes in Computer Science, pages 515--518. Springer-Verlag, July 2004. Boston, Massachusetts.
 
8
Clark Barrett, Cesare Tinelli, Alexander Fuchs, Yeting Ge, George Hagen, and Dejan Jovanovic. CVC3. http://www.cs.nyu.edu/acsys/cvc3.
 
9
Gilad Bracha. Pluggable type systems. In OOPSLA'04 Workshop on Revival of Dynamic Languages, October 2004.
 
10
Bradford L. Chamberlain, Sung-Eun Choi, Steven J. Deitz, and Lawrence Snyder. The high-level parallel language ZPL improves productivity and performance. In Proceedings of the IEEE International Workshop on Productivity and Performance in High-End Computing, 2004.
 
11
12
 
13
Stephen Chong, Andrew C. Myers, K. Vikram, and Lantian Zheng. Jif reference manual, Jif 3.0.0 version. http://www.cs.cornell.edu/jif, June 2006.
14
 
15
The Coq proof assistant: Reference manual, version 8.1. http://coq.inria.fr/, 2006.
 
16
 
17
Erik Ernst. gbeta: A Language with Virtual Attributes, Block Structure, and Propagating, Dynamic Inheritance. PhD thesis, Department of Computer Science, University of Aarhus, Århus, Denmark, 1999.
18
19
 
20
Cormac Flanagan, Stephen N. Freund, and Aaron Tomb. Hybrid types, invariants, and refinements for imperative objects. In International Workshop on Foundations of Object-Oriented Programming (FOOL), 2006.
21
22
23
24
25
 
26
 
27
Christian Grothoff, Jens Palsberg, and Vijay Saraswat. Safe arrays via regions and dependent types. Technical Report RC23911, IBM T.J. Watson Research Center, 2006.
28
29
30
 
31
Radha Jagadeesan, Gopalan Nadathur, and Vijay A. Saraswat. Testing concurrent systems: An interpretation of intuitionistic logic. In Ramaswamy Ramanujam and Sandeep Sen, editors, FSTTCS, volume 3821 of Lecture Notes in Computer Science, pages 517--528. Springer, 2005.
 
32
 
33
JSR 308: Annotations on Java types. http://jcp.org/en/jsr/detail?id=308.
 
34
Xavier Leroy et al. The Objective Caml system. http://caml.inria.fr/ocaml/.
 
35
36
 
37
Per Martin-Löf. A Theory of Types. 1971.
 
38
39
40
41
42
 
43
 
44
Nathaniel Nystrom, Michael R. Clarkson, and Andrew C. Myers. Polyglot: An extensible compiler framework for Java. In Görel Hedin, editor, Compiler Construction, 12th International Conference, CC 2003, number 2622 in LNCS, pages 138--152. Springer-Verlag, April 2003.
45
 
46
Nathaniel Nystrom and Vijay Saraswat. An annotation and compiler plugin system for X10. Technical Report RC24198, IBM T.J. Watson Research Center, 2007.
 
47
Martin Odersky. Report on the programming language Scala. Technical report, EPFL, 2006.
 
48
Martin Odersky, Philippe Altherr, Vincent Cremet, Burak Emir, Sebastian Maneth, Stéphane Micheloud, Nikolay Mihaylov, Michel Schinz, Erik Stenman, and Matthias Zenger. An overview of the Scala programming language, June 2004. http://scala.epfl.ch/docu/files/ScalaOverview.pdf.
 
49
Martin Odersky, Vincent Cremet, Christine Röckl, and Matthias Zenger. A nominal theory of objects with dependent types. In Proceedings of 17th European Conference on Object-Oriented Programming (ECOOP 2003), number 2743 in Lecture Notes in Computer Science, pages 201--224. Springer-Verlag, July 2003.
 
50
Martin Odersky and Christoph Zenger. Nested types. In 8th Workshop on Foundations of Object-Oriented Languages (FOOL), 2001.
51
 
52
53
 
54
 
55
56
 
57
Vijay Saraswat. The category of constraint systems is Cartesian closed. In LICS '92, pages 341--345, 1992.
 
58
Vijay Saraswat et al. The X10 language specification. Technical report, IBM T.J. Watson Research Center, 2006.
 
59
Martin Sulzmann, Martin Odersky, and Martin Wehr. Type inference with constrained types. In Fourth International Workshop on Foundations of Object-Oriented Programming (FOOL 4), 1997.
 
60
61
 
62
63
64


Collaborative Colleagues:
Nathaniel Nystrom: colleagues
Vijay Saraswat: colleagues
Jens Palsberg: colleagues
Christian Grothoff: colleagues