Misleading contract syntax

Ary Borenszweig ary at esperanto.org.ar
Thu Mar 4 05:24:43 PST 2010


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).



More information about the Digitalmars-d mailing list