True lies: Lazy contracts for lazy languages – Faithfulness is better than laziness
Markus Degen, Peter J. Thiemann, Stefan Wehr · 2009
Abstract: Contracts are a proven tool in software development. They provide spec-ifications for operations that may be statically verified or dynamically validated by contract monitoring. Contract monitoring for lazy programming languages does not have a generally accepted basis. This paper discusses three approaches, eager, semi-eager, and lazy monitoring, all of which are flawed. The first two may change program behavior, while the last two may lead to silent contract violations. 1