The root cause of blame: contracts for intersection and union types
Gradual typing has emerged as the tonic for programmers with a thirst for a blend of static and dynamic typing. Contracts provide a lightweight form of gradual typing as they can be implemented as a library, rather than requiring a gradual type system. Intersection and union types are well suited to...
Gespeichert in:
Veröffentlicht in: | Proceedings of ACM on programming languages 2018-11, Vol.2 (OOPSLA), p.1-29 |
---|---|
Hauptverfasser: | , , |
Format: | Artikel |
Sprache: | eng |
Online-Zugang: | Volltext |
Tags: |
Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
|
container_end_page | 29 |
---|---|
container_issue | OOPSLA |
container_start_page | 1 |
container_title | Proceedings of ACM on programming languages |
container_volume | 2 |
creator | Williams, Jack Morris, J. Garrett Wadler, Philip |
description | Gradual typing has emerged as the tonic for programmers with a thirst for a blend of static and dynamic typing. Contracts provide a lightweight form of gradual typing as they can be implemented as a library, rather than requiring a gradual type system.
Intersection and union types are well suited to static and dynamic languages: intersection encodes overloaded functions; union encodes uncertain data arising from branching code. We extend the untyped lambda calculus with contracts for monitoring higher-order intersection and union types, for the first time giving a uniform treatment to both. Each operator requires a single reduction rule that does not depend on the constituent types or the context of the operator.
We present a new method for defining contract satisfaction based on blame behaviour. A value positively satisfies a type if applying a contract of that type can never elicit positive blame. A continuation negatively satisfies a type if applying a contract of that type can never elicit negative blame. We supplement our definition of satisfaction with a series of monitoring properties that satisfying values and continuations should have. |
doi_str_mv | 10.1145/3276504 |
format | Article |
fullrecord | <record><control><sourceid>crossref</sourceid><recordid>TN_cdi_crossref_primary_10_1145_3276504</recordid><sourceformat>XML</sourceformat><sourcesystem>PC</sourcesystem><sourcerecordid>10_1145_3276504</sourcerecordid><originalsourceid>FETCH-LOGICAL-c2758-a065107c142a4ec07adfb1d6e67ee919cf33b5342b18d99609fdf61dee7f38e3</originalsourceid><addsrcrecordid>eNpNj81KAzEURoMoWGrpK2TnajQ3vxN3MqgVCm5mP2SSGzrSTkqSLvr2WuzC1XdWH-cQsgb2BCDVs-BGKyZvyIJLoxqQHG7_8T1ZlfLNGAMrZCvsgnT9DmlOqVLvTgVpinTcuwO-UJ_mmp2vhcaU6TRXzAV9ndJM3Rzoab5QPR-xPJC76PYFV9ddkv79re82zfbr47N73TaeG9U2jmkFzPhfESfRM-NCHCFo1AbRgvVRiFEJyUdog7Wa2RiihoBoomhRLMnj363PqZSMcTjm6eDyeQA2XOqHa734AUBJS4o</addsrcrecordid><sourcetype>Aggregation Database</sourcetype><iscdi>true</iscdi><recordtype>article</recordtype></control><display><type>article</type><title>The root cause of blame: contracts for intersection and union types</title><source>ACM Digital Library Complete</source><source>Elektronische Zeitschriftenbibliothek - Frei zugängliche E-Journals</source><creator>Williams, Jack ; Morris, J. Garrett ; Wadler, Philip</creator><creatorcontrib>Williams, Jack ; Morris, J. Garrett ; Wadler, Philip</creatorcontrib><description>Gradual typing has emerged as the tonic for programmers with a thirst for a blend of static and dynamic typing. Contracts provide a lightweight form of gradual typing as they can be implemented as a library, rather than requiring a gradual type system.
Intersection and union types are well suited to static and dynamic languages: intersection encodes overloaded functions; union encodes uncertain data arising from branching code. We extend the untyped lambda calculus with contracts for monitoring higher-order intersection and union types, for the first time giving a uniform treatment to both. Each operator requires a single reduction rule that does not depend on the constituent types or the context of the operator.
We present a new method for defining contract satisfaction based on blame behaviour. A value positively satisfies a type if applying a contract of that type can never elicit positive blame. A continuation negatively satisfies a type if applying a contract of that type can never elicit negative blame. We supplement our definition of satisfaction with a series of monitoring properties that satisfying values and continuations should have.</description><identifier>ISSN: 2475-1421</identifier><identifier>EISSN: 2475-1421</identifier><identifier>DOI: 10.1145/3276504</identifier><language>eng</language><ispartof>Proceedings of ACM on programming languages, 2018-11, Vol.2 (OOPSLA), p.1-29</ispartof><lds50>peer_reviewed</lds50><oa>free_for_read</oa><woscitedreferencessubscribed>false</woscitedreferencessubscribed><citedby>FETCH-LOGICAL-c2758-a065107c142a4ec07adfb1d6e67ee919cf33b5342b18d99609fdf61dee7f38e3</citedby><cites>FETCH-LOGICAL-c2758-a065107c142a4ec07adfb1d6e67ee919cf33b5342b18d99609fdf61dee7f38e3</cites></display><links><openurl>$$Topenurl_article</openurl><openurlfulltext>$$Topenurlfull_article</openurlfulltext><thumbnail>$$Tsyndetics_thumb_exl</thumbnail><link.rule.ids>314,776,780,27903,27904</link.rule.ids></links><search><creatorcontrib>Williams, Jack</creatorcontrib><creatorcontrib>Morris, J. Garrett</creatorcontrib><creatorcontrib>Wadler, Philip</creatorcontrib><title>The root cause of blame: contracts for intersection and union types</title><title>Proceedings of ACM on programming languages</title><description>Gradual typing has emerged as the tonic for programmers with a thirst for a blend of static and dynamic typing. Contracts provide a lightweight form of gradual typing as they can be implemented as a library, rather than requiring a gradual type system.
Intersection and union types are well suited to static and dynamic languages: intersection encodes overloaded functions; union encodes uncertain data arising from branching code. We extend the untyped lambda calculus with contracts for monitoring higher-order intersection and union types, for the first time giving a uniform treatment to both. Each operator requires a single reduction rule that does not depend on the constituent types or the context of the operator.
We present a new method for defining contract satisfaction based on blame behaviour. A value positively satisfies a type if applying a contract of that type can never elicit positive blame. A continuation negatively satisfies a type if applying a contract of that type can never elicit negative blame. We supplement our definition of satisfaction with a series of monitoring properties that satisfying values and continuations should have.</description><issn>2475-1421</issn><issn>2475-1421</issn><fulltext>true</fulltext><rsrctype>article</rsrctype><creationdate>2018</creationdate><recordtype>article</recordtype><recordid>eNpNj81KAzEURoMoWGrpK2TnajQ3vxN3MqgVCm5mP2SSGzrSTkqSLvr2WuzC1XdWH-cQsgb2BCDVs-BGKyZvyIJLoxqQHG7_8T1ZlfLNGAMrZCvsgnT9DmlOqVLvTgVpinTcuwO-UJ_mmp2vhcaU6TRXzAV9ndJM3Rzoab5QPR-xPJC76PYFV9ddkv79re82zfbr47N73TaeG9U2jmkFzPhfESfRM-NCHCFo1AbRgvVRiFEJyUdog7Wa2RiihoBoomhRLMnj363PqZSMcTjm6eDyeQA2XOqHa734AUBJS4o</recordid><startdate>20181101</startdate><enddate>20181101</enddate><creator>Williams, Jack</creator><creator>Morris, J. Garrett</creator><creator>Wadler, Philip</creator><scope>AAYXX</scope><scope>CITATION</scope></search><sort><creationdate>20181101</creationdate><title>The root cause of blame: contracts for intersection and union types</title><author>Williams, Jack ; Morris, J. Garrett ; Wadler, Philip</author></sort><facets><frbrtype>5</frbrtype><frbrgroupid>cdi_FETCH-LOGICAL-c2758-a065107c142a4ec07adfb1d6e67ee919cf33b5342b18d99609fdf61dee7f38e3</frbrgroupid><rsrctype>articles</rsrctype><prefilter>articles</prefilter><language>eng</language><creationdate>2018</creationdate><toplevel>peer_reviewed</toplevel><toplevel>online_resources</toplevel><creatorcontrib>Williams, Jack</creatorcontrib><creatorcontrib>Morris, J. Garrett</creatorcontrib><creatorcontrib>Wadler, Philip</creatorcontrib><collection>CrossRef</collection><jtitle>Proceedings of ACM on programming languages</jtitle></facets><delivery><delcategory>Remote Search Resource</delcategory><fulltext>fulltext</fulltext></delivery><addata><au>Williams, Jack</au><au>Morris, J. Garrett</au><au>Wadler, Philip</au><format>journal</format><genre>article</genre><ristype>JOUR</ristype><atitle>The root cause of blame: contracts for intersection and union types</atitle><jtitle>Proceedings of ACM on programming languages</jtitle><date>2018-11-01</date><risdate>2018</risdate><volume>2</volume><issue>OOPSLA</issue><spage>1</spage><epage>29</epage><pages>1-29</pages><issn>2475-1421</issn><eissn>2475-1421</eissn><abstract>Gradual typing has emerged as the tonic for programmers with a thirst for a blend of static and dynamic typing. Contracts provide a lightweight form of gradual typing as they can be implemented as a library, rather than requiring a gradual type system.
Intersection and union types are well suited to static and dynamic languages: intersection encodes overloaded functions; union encodes uncertain data arising from branching code. We extend the untyped lambda calculus with contracts for monitoring higher-order intersection and union types, for the first time giving a uniform treatment to both. Each operator requires a single reduction rule that does not depend on the constituent types or the context of the operator.
We present a new method for defining contract satisfaction based on blame behaviour. A value positively satisfies a type if applying a contract of that type can never elicit positive blame. A continuation negatively satisfies a type if applying a contract of that type can never elicit negative blame. We supplement our definition of satisfaction with a series of monitoring properties that satisfying values and continuations should have.</abstract><doi>10.1145/3276504</doi><tpages>29</tpages><oa>free_for_read</oa></addata></record> |
fulltext | fulltext |
identifier | ISSN: 2475-1421 |
ispartof | Proceedings of ACM on programming languages, 2018-11, Vol.2 (OOPSLA), p.1-29 |
issn | 2475-1421 2475-1421 |
language | eng |
recordid | cdi_crossref_primary_10_1145_3276504 |
source | ACM Digital Library Complete; Elektronische Zeitschriftenbibliothek - Frei zugängliche E-Journals |
title | The root cause of blame: contracts for intersection and union types |
url | https://sfx.bib-bvb.de/sfx_tum?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&ctx_tim=2025-01-27T01%3A23%3A22IST&url_ver=Z39.88-2004&url_ctx_fmt=infofi/fmt:kev:mtx:ctx&rfr_id=info:sid/primo.exlibrisgroup.com:primo3-Article-crossref&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft.genre=article&rft.atitle=The%20root%20cause%20of%20blame:%20contracts%20for%20intersection%20and%20union%20types&rft.jtitle=Proceedings%20of%20ACM%20on%20programming%20languages&rft.au=Williams,%20Jack&rft.date=2018-11-01&rft.volume=2&rft.issue=OOPSLA&rft.spage=1&rft.epage=29&rft.pages=1-29&rft.issn=2475-1421&rft.eissn=2475-1421&rft_id=info:doi/10.1145/3276504&rft_dat=%3Ccrossref%3E10_1145_3276504%3C/crossref%3E%3Curl%3E%3C/url%3E&disable_directlink=true&sfx.directlink=off&sfx.report_link=0&rft_id=info:oai/&rft_id=info:pmid/&rfr_iscdi=true |