2015
DOI: 10.1016/j.scico.2013.09.005
|View full text |Cite
|
Sign up to set email alerts
|

Computational contracts

Abstract: Pre/post contracts for higher-order functions, as proposed by Findler and Felleisen and provided in Racket, allow run-time verification and blame assignment of higher-order functions. However these contracts treat contracted functions as black boxes, allowing verification of only input and output. It turns out that many interesting concerns about the behaviour of a function require going beyond that black-box approach, in order to control the actual computation that follows from a function. Examples are prohib… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
4
1

Citation Types

0
8
0

Year Published

2016
2016
2023
2023

Publication Types

Select...
4
3

Relationship

2
5

Authors

Journals

citations
Cited by 14 publications
(8 citation statements)
references
References 42 publications
0
8
0
Order By: Relevance
“…Thus, protocols are a natural extension for Racket's contract system. In general, there have been some steps towards protocol contracts Disney et al 2011;Heidegger et al 2012;Moore et al 2016Moore et al , 2014Scholliers et al 2015], but understanding how to design and implement them remains largely an open research question.…”
Section: Lessons Learnedmentioning
confidence: 99%
“…Thus, protocols are a natural extension for Racket's contract system. In general, there have been some steps towards protocol contracts Disney et al 2011;Heidegger et al 2012;Moore et al 2016Moore et al , 2014Scholliers et al 2015], but understanding how to design and implement them remains largely an open research question.…”
Section: Lessons Learnedmentioning
confidence: 99%
“…The interplay between higher-order contracts and behavioral/temporal aspects of modules, such as restricting the order in which functions can be invoked, has been previously addressed by Disney et al [2011] and Scholliers et al [2015]. In both approaches, the enforcement of temporal constraints is done dynamically and the contract language allows for the specification of both allowed and disallowed traces.…”
Section: Related Workmentioning
confidence: 99%
“…On the contrary, in λCoS, the usage of endpoints is regulated by a combination of static and dynamic constraints: static constraints are enforced by session types, which guarantee that processes use session endpoints according to their protocol; dynamic constraints, which concern the content of exchanged messages and may affect the selection and availability of choices and branches (Section 6.3), are checked at runtime by monitors. None of the previous works on behavioral/temporal contracts Scholliers et al [2015], Disney et al [2011] provides a characterisation of module correctness or a formal statement about the correctness of blame assignment akin to our blame soundness result (Section 5). Swords et al [2015] proposed λ CC , a language tailored to the implementation of alternative approaches to monitoring, and discussed a possible implementation of the temporal contracts of Disney et al [2011] on top of λ CC .…”
Section: Related Workmentioning
confidence: 99%
“…Their work is closer to the use of tags than effect annotations in the framework of Marino & Millstein (2009), as it focuses on annotations on values and on atomic types instead of function types, with the goal of gradualizing the annotation part of annotated type systems. Extensions to contract systems for higher order functions (Findler & Felleisen, 2002), such as computational contracts (Scholliers et al, 2015) and temporal contracts , have the ability to monitor for the occurrence of specific (sequences of) execution events, in particular effectful operations. These approaches rely on full runtime monitoring; it is not clear if they could be reconciled with the pay-as-you-go model of gradual checking.…”
Section: Related Workmentioning
confidence: 99%