Pelle Månsson wrote:
On 03/04/2010 02:24 PM, Ary Borenszweig wrote:
Norbert Nemec wrote:
Hi there,
following the recent thread on contracts, I come to the conclusion
that the current syntax is misleading and counterproductive.
* The concept of a contract is an expression, not a statement.
* A contract should *never* have side effects, otherwise debugging
code may behave differently from release mode (which is the ultimate
nightmare).
* Any reasonable example with contracts contains just a list of
assertions.
* There is a fundamental distinction between assertions and contracts
(see recent thread: contracts are part of interface design, assertions
are computable comments)
=> Why are contracts defined as lists of statements in the first
place? Defining contracts as side-effect free expressions would solve
all of the above problems at once, decoupling the concepts of
assertions and contracts and resulting in safer, much more concise code.
int binary_search(int[] array, int n);
Write the precondition of this function using only ors and ands (and no
helper functions).
Why should you not be allowed helper functions?
Ok, but I don't want the language to force me to write helper functions
just to write my contracts.