Eiffel: the language
The Art of the Metaobject Protocol
The Art of the Metaobject Protocol
Contracts for higher-order functions
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Report on the programming language Euclid
ACM SIGPLAN Notices
A classification system and analysis for aspect-oriented programs
Proceedings of the 12th ACM SIGSOFT twelfth international symposium on Foundations of software engineering
OOPSLA '05 Companion to the 20th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A Min-Cover Approach for Finding Salient Curves
CVPRW '06 Proceedings of the 2006 Conference on Computer Vision and Pattern Recognition Workshop
Robust composition: towards a unified approach to access control and concurrency control
Robust composition: towards a unified approach to access control and concurrency control
An Overview of Anna, a Specification Language for Ada
IEEE Software
The design and implementation of typed scheme
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Mirror-based reflection in AmbientTalk
Software—Practice & Experience
Integrating Software Testing and Run-Time Checking in an Assertion Verification Framework
ICLP '09 Proceedings of the 25th International Conference on Logic Programming
EffectiveAdvice: disciplined advice with explicit effects
Proceedings of the 9th International Conference on Aspect-Oriented Software Development
A pattern logic for prompt lazy assertions in Haskell
IFL'06 Proceedings of the 18th international conference on Implementation and application of functional languages
Parametric polymorphism through run-time sealing or, theorems for low, low prices!
ESOP'08/ETAPS'08 Proceedings of the Theory and practice of software, 17th European conference on Programming languages and systems
Proxies: design principles for robust object-oriented intercession APIs
Proceedings of the 6th symposium on Dynamic languages
Contracts for first-class classes
Proceedings of the 6th symposium on Dynamic languages
Virtual values for language extension
Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
Can aspects implement contracts?
RISE'05 Proceedings of the Second international conference on Rapid Integration of Software Engineering Techniques
Typed contracts for functional programming
FLOPS'06 Proceedings of the 8th international conference on Functional and Logic Programming
Open modules: modular reasoning about advice
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
Fast and precise hybrid type inference for JavaScript
Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation
Practical typed lazy contracts
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
Higher-order symbolic execution via contracts
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Constraining delimited control with contracts
ESOP'13 Proceedings of the 22nd European conference on Programming Languages and Systems
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
Contracts for First-Class Classes
ACM Transactions on Programming Languages and Systems (TOPLAS)
Trustworthy proxies: virtualizing objects with invariants
ECOOP'13 Proceedings of the 27th European conference on Object-Oriented Programming
Hi-index | 0.00 |
Chaperones and impersonators provide run-time support for interposing on primitive operations such as function calls, array access and update, and structure field access and update. Unlike most interposition support, chaperones and impersonators are restricted so that they constrain the behavior of the interposing code to reasonable interposition, which in practice preserves the abstraction mechanisms and reasoning that programmers and compiler analyses rely on. Chaperones and impersonators are particularly useful for implementing contracts, and our implementation in Racket allows us to improve both the expressiveness and the performance of Racket's contract system. Specifically, contracts on mutable data can be enforced without changing the API to that data; contracts on large data structures can be checked lazily on only the accessed parts of the structure; contracts on objects and classes can be implemented with lower overhead; and contract wrappers can preserve object equality where appropriate. With this extension, gradual typing systems, such as Typed Racket, that rely on contracts for interoperation with untyped code can now pass mutable values safely between typed and untyped modules.