Contracts for higher-order functions
By R. Findler, Matthias Felleisen. ACM SIGPLAN International Conference on Functional Programming, 2002
508 citations recorded by the source corpus.
Subfields: Artificial Intelligence, Computational Theory and Mathematics, Information Systems
View Paper: https://www.semanticscholar.org/paper/7476e097c4f7b84418526922a2acd56b4e88142f
How researchers see this paper
The researchers whose trusted networks rank it highest, strongest advocate first. Every researcher gets a different order.
In Artificial Intelligence
- Jeremy G. Siek
- Jeffrey S. Foster
- Arjun Guha
- Walid Taha
- Yusuke Miyazaki
- Atsushi Igarashi
- Taro Sekiyama
- Brianna M. Ren
In Computational Theory and Mathematics
- Jeremy G. Siek
- Walid Taha
- Yusuke Miyazaki
- Atsushi Igarashi
- Taro Sekiyama
- Michael M. Vitousek
- Jim Baker
- Andrew M. Kent
In Information Systems
- Jeffrey S. Foster
- Brianna M. Ren
- T. Stephen Strickland
- John Toman
- Yusuke Miyazaki
- Atsushi Igarashi
- Taro Sekiyama
- Giuseppe Castagna
Citations in the corpus
- The ruby type checker (2013, background): “This conversion is similar to the conversion performed by Findler and Felleisen [7] to protect higher-order functions with contracts.”
- Design and evaluation of gradual typing for python (2014, methodology): “We could possibly achieve some kind of static typing by introducing sum types into the language, or by using the occurrence typing of Tobin-Hochstadt and Felleisen [34].”
- Static type inference for Ruby (2009, methodology): “Our vision of DRuby was inspired by an exciting body of recent work on mixing static and dynamic typing, including ideas such as soft typing [14], the dynamic type [2], gradual typing [33], and contracts [16].”
- Mixed Messages: Measuring Conformance and Non-Interference in TypeScript (2017, unknown): “Our approach to function wrappers follows that of Findler and Felleisen [8] and Wadler and Findler [39].”
- Hybrid type checking (2006, methodology): “The cast 〈S T 〉 t dynamically checks that the result of t is of type T (in a manner similar to coercions [38], contracts [13, 14], and to type casts in languages such as Java [20]).”
- Gradual Soundness: Lessons from Static Python (2022, background): “This latter property means that blame-tracking [12] is trivial because casts either succeed or fail immediately.”
- JSTrace: Run-time Type Discovery for JavaScript (2010, background): “While one of Typed JavaScript’s goals is to support migration to a static type system, we would do so only with clean separation between the typed and untyped parts of a program by using contracts [10].”
- Gradual typing: a new perspective (2019, methodology): “This had to be done from scratch, since all existing formalizations of gradual typing were essentially syntax-based, even the remarkable AGT approach of Garcia et al. [2016]: although it gives an interpretation of gradual types via a łconcretizationž function, it relies on an łabstractionž function ”
- The Design and Implementation of Typed Scheme: From Scripts to Programs (2011, unknown): “We intend to study an integration of latent predicates with higher-order contracts (Findler and Felleisen, 2002) and expect to find additional uses.”
- Gradual Typing for Functional Languages (2006, unknown): “This rule is inspired by the work on semantic casts [13, 14, 15], though the rule may look slightly different because the casts used in this paper are annotated with the target type only and not also with the source type.”
- Gradual Typing for Objects (2007, background): “For example, casting at function types creates a wrapper function with the appropriate casts on the input and output [19, 20, 21, 48].”
- Dynamic type inference for gradual Hindley–Milner typing (2018, background): “They have polarity to indicate which side of a cast to be blamed [Findler and Felleisen 2002].”