skip to main content
keynote

Behavioral software contracts

Published: 19 August 2014 Publication History

Abstract

Programmers embrace contracts. They can use the language they know and love to formulate logical assertions about the behavior of their programs. They can use the existing IDE infrastructure to log contracts, to test, to debug, and to profile their programs.
The keynote presents the challenges and rewards of supporting contracts in a modern, full-spectrum programming language. It covers technical challenges of contracts while demonstrating the non-technical motivation for contract system design choices and showing how contracts and contract research can serve practicing programmers.
The remainder of this article is a literature survey of contract research, with an emphasis on recent work about higher-order contracts and blame.

References

[1]
A. Ahmed, R. B. Findler, J. Matthews, and P. Wadler. Blame for All. In Proc. ACM Sym. Principles of Programming Languages, 2011.
[2]
M. Blume and D. McAllester. Sound and Complete Models of Contracts. J. Functional Programming 16(4-5), 2006.
[3]
O. Chitil and F. Huch. A Pattern Logic for Prompt Lazy Assertions in Haskell. In Proc. Implementation and Application of Functional Languages, 2006.
[4]
O. Chitil, D. McNeill, and C. Runciman. Lazy Assertions. In Proc. Implementation and Application of Functional Languages, 2003.
[5]
M. Degen, P. Thiemann, and S. Wehr. The Interaction of Contracts and Laziness. In Proc. Partial Evaluation and Program Manipulation, 2012.
[6]
C. Dimoulas and M. Felleisen. On Contract Satisfaction in a Higher-Order World. Trans. Programming Languages and Systems 33(5), 2011.
[7]
C. Dimoulas, R. B. Findler, and M. Felleisen. Option Contracts. In Proc. ACM Conf. Object-Oriented Programming, Systems, Languages and Applications, 2013.
[8]
C. Dimoulas, R. B. Findler, C. Flanagan, and M. Felleisen. Correct Blame for Contracts: No More Scapegoating. In Proc. ACM Sym. Principles of Programming Languages, 2011.
[9]
C. Dimoulas, S. Tobin-Hochstadt, and M. Felleisen. Complete Monitors for Behavioral Contracts. In Proc. Europ. Sym. on Programming, 2012.
[10]
R. B. Findler and M. Blume. Contracts as Pairs of Projections. In Proc. Sym. Functional and Logic Programming, 2006.
[11]
R. B. Findler and M. Felleisen. Contract Soundness for Object-Oriented Languages. In Proc. ACM Conf. Object-Oriented Programming, Systems, Languages and Applications, 2001.
[12]
R. B. Findler and M. Felleisen. Contracts for Higher-order Functions. In Proc. ACM Intl. Conf. Functional Programming, 2002.
[13]
R. B. Findler, M. Flatt, and M. Felleisen. Semantic Casts: Contracts and Structural Subtyping in a NominalWorld. In Proc. Europ. Conf. Object-Oriented Programming, 2004.
[14]
R. B. Findler, S. Guo, and A. Rogers. Lazy Contract Checking for Immutable Data Structures. In Proc. Implementation and Application of Functional Languages, 2007.
[15]
R. B. Findler, M. Latendresse, and M. Felleisen. Behavioral Contracts and Behavioral Subtyping. In Proc. ACM Conf. Object-Oriented Programming, Systems, Languages and Applications, 2001.
[16]
C. Flanagan. Hybrid Type Checking. In Proc. ACM Sym. Principles of Programming Languages, 2006.
[17]
M. Greenberg, B. C. Pierce, and S. Weirich. Contracts Made Manifest. In Proc. ACM Sym. Principles of Programming Languages, 2010.
[18]
J. Gronski and C. Flanagan. Unifying Hybrid Types and Contracts. In Proc. Sym. Trends in Functional Programming, 2007.
[19]
A. Guha, J. Matthews, R. B. Findler, and S. Krishnamurthi. Relationally-Parametric Polymorphic Contracts. In Proc. Dynamic Languages Symposium, 2007.
[20]
D. Herman, A. Tomb, and C. Flanagan. Space-Efficient Gradual Typing. In Proc. Sym. Trends in Functional Programming, 2007.
[21]
J. Matthews and A. Ahmed. Parametric Polymorphism Through Run-Time Sealing or, Theorems for Low, Low Prices! In Proc. Europ. Sym. on Programming, 2008.
[22]
J. Matthews and R. B. Findler. Operational Semantics for Multi-Language Programs. In Proc. ACM Sym. Principles of Programming Languages, 2007.
[23]
B. Meyer. Eiffel: The Language. Prentice Hall, 1991.
[24]
B. Meyer. Applying "Design by Contract". IEEE Computer 25(10), 1992.
[25]
D. L. Parnas. A Technique for Software Module Specification with Examples. Communications of the ACM 15(5), 1972.
[26]
J. G. Siek andW. Taha. Gradual Typing for Functional Languages. In Proc. Scheme and Functional Programming, 2006.
[27]
T. S. Strickland, C. Dimoulas, A. Takikawa, and M. Felleisen. Contracts for First-Class Classes. Trans. Programming Languages and Systems 35(3), 2013.
[28]
T. S. Strickland and M. Felleisen. Nested and Dynamic Contract Boundaries. In Proc. Implementation and Application of Functional Languages, 2009.
[29]
T. S. Strickland and M. Felleisen. Contracts for First-Class Classes. In Proc. Dynamic Languages Symposium, 2010.
[30]
T. S. Strickland, S. Tobin-Hochstadt, R. B. Findler, and M. Flatt. Chaperones and Impersonators: Run-Time Support for Reasonable Interposition. In Proc. ACM Conf. Object-Oriented Programming, Systems, Languages and Applications, 2012.
[31]
A. Takikawa, T. S. Strickland, and S. Tobin-Hochstadt. Constraining Delimited Control with Contracts. In Proc. Europ. Sym. on Programming, 2013.
[32]
S. Tobin-Hochstadt and M. Felleisen. Interlanguage Migration: from Scripts to Programs. In Proc. Dynamic Languages Symposium, 2006.
[33]
J. A. Tov and R. Pucella. Stateful Contracts for Affine Types. In Proc. Europ. Sym. on Programming, 2010.
[34]
P. Wadler and R. B. Findler. Well-typed Programs Can't Be Blamed. In Proc. Europ. Sym. on Programming, 2009.

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM SIGPLAN Notices
ACM SIGPLAN Notices  Volume 49, Issue 9
ICFP '14
September 2014
361 pages
ISSN:0362-1340
EISSN:1558-1160
DOI:10.1145/2692915
Issue’s Table of Contents
  • cover image ACM Conferences
    ICFP '14: Proceedings of the 19th ACM SIGPLAN international conference on Functional programming
    August 2014
    390 pages
    ISBN:9781450328739
    DOI:10.1145/2628136
Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for third-party components of this work must be honored. For all other uses, contact the Owner/Author.

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 19 August 2014
Published in SIGPLAN Volume 49, Issue 9

Check for updates

Author Tag

  1. contracts

Qualifiers

  • Keynote

Funding Sources

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)4
  • Downloads (Last 6 weeks)0
Reflects downloads up to 13 Dec 2024

Other Metrics

Citations

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media