Misleading contract syntax

Ary Borenszweig ary at esperanto.org.ar
Thu Mar 4 07:12:49 PST 2010


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.



More information about the Digitalmars-d mailing list