Programming in Martin-Lo¨f's type theory: an introduction
Programming in Martin-Lo¨f's type theory: an introduction
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
Eiffel: the language
Contracts for higher-order functions
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Guarded recursive datatype constructors
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Computer
Behavioral software contracts
A tutorial on the universality and expressiveness of fold
Journal of Functional Programming
A sound (and complete) model of contracts
Proceedings of the ninth ACM SIGPLAN international conference on Functional programming
Sound and complete models of contracts
Journal of Functional Programming
IFL'03 Proceedings of the 15th international conference on Implementation of Functional Languages
Extended static checking for haskell
Proceedings of the 2006 ACM SIGPLAN workshop on Haskell
Relationally-parametric polymorphic contracts
Proceedings of the 2007 symposium on Dynamic languages
Lazy Contract Checking for Immutable Data Structures
Implementation and Application of Functional Languages
Static contract checking for Haskell
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
What does aspect-oriented programming mean for functional programmers?
Proceedings of the 2009 ACM SIGPLAN workshop on Generic programming
Programming Errors in Traversal Programs Over Structured Data
Electronic Notes in Theoretical Computer Science (ENTCS)
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A pattern logic for prompt lazy assertions in Haskell
IFL'06 Proceedings of the 18th international conference on Implementation and application of functional languages
Monadic, prompt lazy assertions in Haskell
APLAS'07 Proceedings of the 5th Asian conference on Programming languages and systems
Undoing dynamic typing (declarative pearl)
FLOPS'08 Proceedings of the 9th international conference on Functional and logic programming
Correct blame for contracts: no more scapegoating
Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A semantics for lazy assertions
Proceedings of the 20th ACM SIGPLAN workshop on Partial evaluation and program manipulation
Lazy and enforceable assertions for functional logic programs
WFLP'10 Proceedings of the 19th international conference on Functional and constraint logic programming
Temporal higher-order contracts
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
On contract satisfaction in a higher-order world
ACM Transactions on Programming Languages and Systems (TOPLAS)
Access permission contracts for scripting languages
POPL '12 Proceedings of the 39th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The interaction of contracts and laziness
PEPM '12 Proceedings of the ACM SIGPLAN 2012 workshop on Partial evaluation and program manipulation
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
Chaperones and impersonators: run-time support for reasonable interposition
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
HALO: haskell to logic through denotational semantics
POPL '13 Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
Hi-index | 0.00 |
A robust software component fulfills a contract: it expects data satisfying a certain property and promises to return data satisfying another property. The object-oriented community uses the design-by-contract approach extensively. Proposals for language extensions that add contracts to higher-order functional programming have appeared recently. In this paper we propose an embedded domain-specific language for typed, higher-order and first-class contracts, which is both more expressive than previous proposals, and allows for a more informative blame assignment. We take some first steps towards an algebra of contracts, and we show how to define a generic contract combinator for arbitrary algebraic data types. The contract language is implemented as a library in Haskell using the concept of generalised algebraic data types.