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.
- A. Ahmed, R. B. Findler, J. Matthews, and P. Wadler. Blame for All. In Proc. ACM Sym. Principles of Programming Languages, 2011. Google ScholarDigital Library
- M. Blume and D. McAllester. Sound and Complete Models of Contracts. J. Functional Programming 16(4-5), 2006. Google ScholarDigital Library
- O. Chitil and F. Huch. A Pattern Logic for Prompt Lazy Assertions in Haskell. In Proc. Implementation and Application of Functional Languages, 2006. Google ScholarDigital Library
- O. Chitil, D. McNeill, and C. Runciman. Lazy Assertions. In Proc. Implementation and Application of Functional Languages, 2003. Google ScholarDigital Library
- M. Degen, P. Thiemann, and S. Wehr. The Interaction of Contracts and Laziness. In Proc. Partial Evaluation and Program Manipulation, 2012. Google ScholarDigital Library
- C. Dimoulas and M. Felleisen. On Contract Satisfaction in a Higher-Order World. Trans. Programming Languages and Systems 33(5), 2011. Google ScholarDigital Library
- C. Dimoulas, R. B. Findler, and M. Felleisen. Option Contracts. In Proc. ACM Conf. Object-Oriented Programming, Systems, Languages and Applications, 2013. Google ScholarDigital Library
- 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. Google ScholarDigital Library
- C. Dimoulas, S. Tobin-Hochstadt, and M. Felleisen. Complete Monitors for Behavioral Contracts. In Proc. Europ. Sym. on Programming, 2012. Google ScholarDigital Library
- R. B. Findler and M. Blume. Contracts as Pairs of Projections. In Proc. Sym. Functional and Logic Programming, 2006. Google ScholarDigital Library
- R. B. Findler and M. Felleisen. Contract Soundness for Object-Oriented Languages. In Proc. ACM Conf. Object-Oriented Programming, Systems, Languages and Applications, 2001. Google ScholarDigital Library
- R. B. Findler and M. Felleisen. Contracts for Higher-order Functions. In Proc. ACM Intl. Conf. Functional Programming, 2002. Google ScholarDigital Library
- 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.Google ScholarCross Ref
- R. B. Findler, S. Guo, and A. Rogers. Lazy Contract Checking for Immutable Data Structures. In Proc. Implementation and Application of Functional Languages, 2007.Google Scholar
- 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.Google ScholarDigital Library
- C. Flanagan. Hybrid Type Checking. In Proc. ACM Sym. Principles of Programming Languages, 2006. Google ScholarDigital Library
- M. Greenberg, B. C. Pierce, and S. Weirich. Contracts Made Manifest. In Proc. ACM Sym. Principles of Programming Languages, 2010. Google ScholarDigital Library
- J. Gronski and C. Flanagan. Unifying Hybrid Types and Contracts. In Proc. Sym. Trends in Functional Programming, 2007.Google Scholar
- A. Guha, J. Matthews, R. B. Findler, and S. Krishnamurthi. Relationally-Parametric Polymorphic Contracts. In Proc. Dynamic Languages Symposium, 2007. Google ScholarDigital Library
- D. Herman, A. Tomb, and C. Flanagan. Space-Efficient Gradual Typing. In Proc. Sym. Trends in Functional Programming, 2007.Google Scholar
- J. Matthews and A. Ahmed. Parametric Polymorphism Through Run-Time Sealing or, Theorems for Low, Low Prices! In Proc. Europ. Sym. on Programming, 2008. Google ScholarDigital Library
- J. Matthews and R. B. Findler. Operational Semantics for Multi-Language Programs. In Proc. ACM Sym. Principles of Programming Languages, 2007. Google ScholarDigital Library
- B. Meyer. Eiffel: The Language. Prentice Hall, 1991. Google ScholarDigital Library
- B. Meyer. Applying "Design by Contract". IEEE Computer 25(10), 1992. Google ScholarDigital Library
- D. L. Parnas. A Technique for Software Module Specification with Examples. Communications of the ACM 15(5), 1972. Google ScholarDigital Library
- J. G. Siek andW. Taha. Gradual Typing for Functional Languages. In Proc. Scheme and Functional Programming, 2006.Google Scholar
- T. S. Strickland, C. Dimoulas, A. Takikawa, and M. Felleisen. Contracts for First-Class Classes. Trans. Programming Languages and Systems 35(3), 2013. Google ScholarDigital Library
- T. S. Strickland and M. Felleisen. Nested and Dynamic Contract Boundaries. In Proc. Implementation and Application of Functional Languages, 2009. Google ScholarDigital Library
- T. S. Strickland and M. Felleisen. Contracts for First-Class Classes. In Proc. Dynamic Languages Symposium, 2010. Google ScholarDigital Library
- 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. Google ScholarDigital Library
- A. Takikawa, T. S. Strickland, and S. Tobin-Hochstadt. Constraining Delimited Control with Contracts. In Proc. Europ. Sym. on Programming, 2013. Google ScholarDigital Library
- S. Tobin-Hochstadt and M. Felleisen. Interlanguage Migration: from Scripts to Programs. In Proc. Dynamic Languages Symposium, 2006. Google ScholarDigital Library
- J. A. Tov and R. Pucella. Stateful Contracts for Affine Types. In Proc. Europ. Sym. on Programming, 2010. Google ScholarDigital Library
- P. Wadler and R. B. Findler. Well-typed Programs Can't Be Blamed. In Proc. Europ. Sym. on Programming, 2009. Google ScholarDigital Library
Index Terms
- Behavioral software contracts
Recommendations
Behavioral software contracts
ICFP '14Programmers 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 ...
Modelling Legal Contracts as Processes
DEXA '00: Proceedings of the 11th International Workshop on Database and Expert Systems ApplicationsThis paper concentrates on the representation of legal relations that occur between parties once they have entered a contractual agreement and their evolution as the agreement progresses through time. Contracts are regarded as processes and they are ...
Comments