skip to main content
10.1145/2628136.2632855acmconferencesArticle/Chapter ViewAbstractPublication PagesicfpConference Proceedingsconference-collections
keynote

Behavioral software contracts

Published:19 August 2014Publication 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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. M. Blume and D. McAllester. Sound and Complete Models of Contracts. J. Functional Programming 16(4-5), 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. O. Chitil and F. Huch. A Pattern Logic for Prompt Lazy Assertions in Haskell. In Proc. Implementation and Application of Functional Languages, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. O. Chitil, D. McNeill, and C. Runciman. Lazy Assertions. In Proc. Implementation and Application of Functional Languages, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. M. Degen, P. Thiemann, and S. Wehr. The Interaction of Contracts and Laziness. In Proc. Partial Evaluation and Program Manipulation, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. C. Dimoulas and M. Felleisen. On Contract Satisfaction in a Higher-Order World. Trans. Programming Languages and Systems 33(5), 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. C. Dimoulas, R. B. Findler, and M. Felleisen. Option Contracts. In Proc. ACM Conf. Object-Oriented Programming, Systems, Languages and Applications, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. C. Dimoulas, S. Tobin-Hochstadt, and M. Felleisen. Complete Monitors for Behavioral Contracts. In Proc. Europ. Sym. on Programming, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. R. B. Findler and M. Blume. Contracts as Pairs of Projections. In Proc. Sym. Functional and Logic Programming, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. R. B. Findler and M. Felleisen. Contracts for Higher-order Functions. In Proc. ACM Intl. Conf. Functional Programming, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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.Google ScholarGoogle ScholarCross RefCross Ref
  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.Google ScholarGoogle Scholar
  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.Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. C. Flanagan. Hybrid Type Checking. In Proc. ACM Sym. Principles of Programming Languages, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. M. Greenberg, B. C. Pierce, and S. Weirich. Contracts Made Manifest. In Proc. ACM Sym. Principles of Programming Languages, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. J. Gronski and C. Flanagan. Unifying Hybrid Types and Contracts. In Proc. Sym. Trends in Functional Programming, 2007.Google ScholarGoogle Scholar
  19. A. Guha, J. Matthews, R. B. Findler, and S. Krishnamurthi. Relationally-Parametric Polymorphic Contracts. In Proc. Dynamic Languages Symposium, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. D. Herman, A. Tomb, and C. Flanagan. Space-Efficient Gradual Typing. In Proc. Sym. Trends in Functional Programming, 2007.Google ScholarGoogle Scholar
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. J. Matthews and R. B. Findler. Operational Semantics for Multi-Language Programs. In Proc. ACM Sym. Principles of Programming Languages, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. B. Meyer. Eiffel: The Language. Prentice Hall, 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. B. Meyer. Applying "Design by Contract". IEEE Computer 25(10), 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. D. L. Parnas. A Technique for Software Module Specification with Examples. Communications of the ACM 15(5), 1972. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. J. G. Siek andW. Taha. Gradual Typing for Functional Languages. In Proc. Scheme and Functional Programming, 2006.Google ScholarGoogle Scholar
  27. T. S. Strickland, C. Dimoulas, A. Takikawa, and M. Felleisen. Contracts for First-Class Classes. Trans. Programming Languages and Systems 35(3), 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. T. S. Strickland and M. Felleisen. Nested and Dynamic Contract Boundaries. In Proc. Implementation and Application of Functional Languages, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. T. S. Strickland and M. Felleisen. Contracts for First-Class Classes. In Proc. Dynamic Languages Symposium, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  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. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. A. Takikawa, T. S. Strickland, and S. Tobin-Hochstadt. Constraining Delimited Control with Contracts. In Proc. Europ. Sym. on Programming, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. S. Tobin-Hochstadt and M. Felleisen. Interlanguage Migration: from Scripts to Programs. In Proc. Dynamic Languages Symposium, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. J. A. Tov and R. Pucella. Stateful Contracts for Affine Types. In Proc. Europ. Sym. on Programming, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. P. Wadler and R. B. Findler. Well-typed Programs Can't Be Blamed. In Proc. Europ. Sym. on Programming, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Behavioral software contracts

          Recommendations

          Comments

          Login options

          Check if you have access through your login credentials or your institution to get full access on this article.

          Sign in
          • Published in

            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

            Copyright © 2014 Owner/Author

            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

            Check for updates

            Author Tags

            Qualifiers

            • keynote

            Acceptance Rates

            ICFP '14 Paper Acceptance Rate28of85submissions,33%Overall Acceptance Rate333of1,064submissions,31%

            Upcoming Conference

            ICFP '24

          PDF Format

          View or Download as a PDF file.

          PDF

          eReader

          View online with eReader.

          eReader