Well-typed programs can't be blamed
P Wadler, RB Findler - European Symposium on Programming, 2009 - Springer
We introduce the blame calculus, which adds the notion of blame from Findler and
Felleisen's contracts to a system similar to Siek and Taha's gradual types and Flanagan's …
Felleisen's contracts to a system similar to Siek and Taha's gradual types and Flanagan's …
Multiparty session types meet communicating automata
PM Deniélou, N Yoshida - European Symposium on Programming, 2012 - Springer
Communicating finite state machines (CFSMs) represent processes which communicate by
asynchronous exchanges of messages via FIFO channels. Their major impact has been in …
asynchronous exchanges of messages via FIFO channels. Their major impact has been in …
Space-efficient gradual typing
D Herman, A Tomb, C Flanagan - Higher-Order and Symbolic …, 2010 - Springer
Gradual type systems offer a smooth continuum between static and dynamic typing by
permitting the free mixture of typed and untyped code. The runtime systems for these …
permitting the free mixture of typed and untyped code. The runtime systems for these …
Hybrid type checking
K Knowles, C Flanagan - ACM Transactions on Programming …, 2010 - dl.acm.org
Traditional static type systems are effective for verifying basic interface specifications.
Dynamically checked contracts support more precise specifications, but these are not …
Dynamically checked contracts support more precise specifications, but these are not …
Correct blame for contracts: no more scapegoating
Behavioral software contracts supplement interface information with logical assertions. A
rigorous enforcement of contracts provides useful feedback to developers if it signals …
rigorous enforcement of contracts provides useful feedback to developers if it signals …
Static contract checking for Haskell
DN Xu, S Peyton Jones, K Claessen - … of the 36th annual ACM SIGPLAN …, 2009 - dl.acm.org
Program errors are hard to detect and are costly both to programmers who spend significant
efforts in debugging, and for systems that are guarded by runtime checks. Static verification …
efforts in debugging, and for systems that are guarded by runtime checks. Static verification …
Complete monitors for behavioral contracts
A behavioral contract in a higher-order language may invoke methods of unknown objects.
Although this expressive power allows programmers to formulate sophisticated contracts, it …
Although this expressive power allows programmers to formulate sophisticated contracts, it …
Contracts made manifest
Since Findler and Felleisen introduced higher-order contracts, many variants have been
proposed. Broadly, these fall into two groups: some follow Findler and Felleisen in using …
proposed. Broadly, these fall into two groups: some follow Findler and Felleisen in using …
Typed closure conversion preserves observational equivalence
Language-based security relies on the assumption that all potential attacks are bound by the
rules of the language in question. When programs are compiled into a different language …
rules of the language in question. When programs are compiled into a different language …
HALO: Haskell to logic through denotational semantics
Even well-typed programs can go wrong in modern functional languages, by encountering a
pattern-match failure, or simply returning the wrong answer. An increasingly-popular …
pattern-match failure, or simply returning the wrong answer. An increasingly-popular …