Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/2997364.2997381acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

Side effects take the blame

Published: 20 October 2016 Publication History

Abstract

We introduce several blame strategies for gradual effect systems. Blame strategies are the part of a language semantics that aims to identify the cause of a runtime check failure. Gradual effect systems are a framework that combines static and dynamic checking of invariants about the side effects performed by a program.
We present a minimal language that performs dynamic checks over an effect discipline, and we explore the design space of blame assignment strategies for effects in this language. We also present usefulness criteria against which we compare these strategies.

References

[1]
A. Ahmed, R. B. Findler, J. G. Siek, and P. Wadler. Blame for all. In POPL, 2011.
[2]
F. Ba˜nados Schwerter, R. Garcia, and É. Tanter. A theory of gradual effect systems. In ICFP, 2014.
[3]
M. Blume and D. McAllester. Sound and complete models of contracts. JFP, 16:375–414, 2006.
[4]
P. Cousot and R. Cousot. Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints. In POPL, 1977.
[5]
C. Dimoulas and M. Felleisen. On contract satisfaction in a higherorder world. TOPLAS, 33(5), Nov. 2011.
[6]
C. Dimoulas, R. B. Findler, C. Flanagan, and M. Felleisen. Correct Blame for Contracts: No More Scapegoating. In POPL, 2011.
[7]
Facebook. Hack Programming Language. http://hacklang. org. R. B. Findler and M. Felleisen. Contract soundness for objectoriented languages. In OOPSLA, 2001.
[8]
R. B. Findler and M. Felleisen. Contracts for higher-order functions. In ICFP, 2002.
[9]
R. B. Findler, M. Latendresse, and M. Felleisen. Behavioral contracts and behavioral subtyping. In FSE, pages 229–236. ACM Press, 2001.
[10]
R. Garcia. Calculating Threesomes, with Blame. In ICFP, 2013.
[11]
D. K. Gifford and J. M. Lucassen. Integrating functional and imperative programming. In LFP, pages 28–38, 1986.
[12]
D. Herman, A. Tomb, and C. Flanagan. Space-efficient gradual typing. In HOSC, 2010.
[13]
L. Jia, H. Gommerstadt, and F. Pfenning. Monitors and Blame Assignment for Higher-order Session Types. In POPL, 2016.
[14]
M. Keil and P. Thiemann. Blame Assignment for Higher-order Contracts with Intersection and Union. In ICFP, 2015.
[15]
Microsoft. TypeScript Programming Language. http://www. typescriptlang.org. J. Siek and W. Taha. Gradual typing for objects. In ECOOP, pages 2–27, 2007.
[16]
J. Siek, R. Garcia, and W. Taha. Exploring the design space of higher-order casts. In ESOP, 2009.
[17]
J. Siek, P. Thiemann, and P. Wadler. Blame and Coercion: Together Again for the First Time. In PLDI, 2015.
[18]
J. G. Siek and W. Taha. Gradual typing for functional languages. In SFP, pages 81–92, 2006.
[19]
J. G. Siek and P. Wadler. Threesomes, with and without blame. In POPL, 2010.
[20]
S. Tobin-Hochstadt and M. Felleisen. Interlanguage migration: From scripts to programs. In OOPSLA, 2006.
[21]
M. Tofte and J.-P. Talpin. Implementation of the typed call-byvalue λ-calculus using a stack of regions. In POPL, 1994.
[22]
M. Toro and E. Tanter. Customizable Gradual Polymorphic Effects for Scala. In OOPSLA, 2015.
[23]
P. Wadler and R. B. Findler. Well-typed programs can’t be blamed. In ESOP, 2009.
[24]
A. K. Wright and M. Felleisen. A syntactic approach to type soundness. Inf. Comput., 115(1):38–94, Nov. 1994.

Cited By

View all
  • (2024)Effectful Software ContractsProceedings of the ACM on Programming Languages10.1145/36329308:POPL(2639-2666)Online publication date: 5-Jan-2024

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
SLE 2016: Proceedings of the 2016 ACM SIGPLAN International Conference on Software Language Engineering
October 2016
257 pages
ISBN:9781450344470
DOI:10.1145/2997364
Permission to make digital or hard copies of all or part 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 components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 20 October 2016

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Blame
  2. Gradual typing
  3. Type-and-effect systems

Qualifiers

  • Research-article

Conference

SLE '16
Sponsor:
SLE '16: Software Language Engineering
October 31 - November 1, 2016
Amsterdam, Netherlands

Upcoming Conference

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)1
  • Downloads (Last 6 weeks)0
Reflects downloads up to 06 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2024)Effectful Software ContractsProceedings of the ACM on Programming Languages10.1145/36329308:POPL(2639-2666)Online publication date: 5-Jan-2024

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