comp.lang.ada
 help / color / mirror / Atom feed
From: Robert A Duff <bobduff@world.std.com>
Subject: Re: disjoint ranges ?
Date: 2000/10/16
Date: 2000-10-16T00:00:00+00:00	[thread overview]
Message-ID: <wcc66ms91t9.fsf@world.std.com> (raw)
In-Reply-To: 8s8iuk$q66$1@nnrp1.deja.com

Robert Dewar <robert_dewar@my-deja.com> writes:

> No, it could be over all damaging. Every new feature you add
> to a language damages it by adding to the understanding,
> programming, description, and implementation complexity.

Quite true, but you don't necessarily have to add features in order to
add functionality.  Sometimes, making a feature more powerful can add
functionality without increasing complexity.

For example, the approach I would take in this case would be to add
arbitrary boolean conditions as invariant conditions (somewhat as in
Eiffel), and then *get rid of* all the various kinds of special-purpose
constraints (range, index, discrim, accuracy).  This would lead to
adding the requested functionality, at a net *decrease* in language
complexity.

Note that Eiffel doesn't quite solve this problem: it has arbitrary
invariant expressions on types, but they can't be applied to integers
(there's only one integer type, and it can't have invariants).

> A feature like this is actually *quite* complex, think for
> example, that we would have to allow dynamic bounds for the
> ranges, and then the checks for disjointness get tricky
> to describe (e.g. can several ranges be flat or superflat?
> if they are, can bounds overlap for the flat ranges? etc)
> 
> That's only the tip of the iceburg complexity wise.
> 
> But the point is that you have to make sure that the value
> of the feature more than undoes the damage done by its
> addition. The burden of proof is tricky in this case, and
> I doubt a convincing argument can be made for adding this
> feature to the language.

Agreed.  Simply *adding* this feature as a feature is not a good idea.

- Bob




  reply	other threads:[~2000-10-16  0:00 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2000-10-12  0:00 disjoint ranges ? Philippe Torres
2000-10-12  0:00 ` Pat Rogers
2000-10-12  0:00   ` Ehud Lamm
2000-10-12  0:00     ` Pat Rogers
2000-10-13  0:00       ` Ehud Lamm
2000-10-13  0:34       ` Jeff Carter
2000-10-13  0:00         ` Marin David Condic
2000-10-14  3:14           ` Robert Dewar
2000-10-13  0:00         ` Philippe Torres
2000-10-14  3:12           ` Robert Dewar
2000-10-16  0:00             ` Robert A Duff [this message]
2000-10-16  0:00               ` Lao Xiao Hai
2000-10-17  0:00                 ` Robert A Duff
2000-10-17  0:00                   ` Lao Xiao Hai
2000-10-18  0:00                   ` dmitry6243
2000-10-18  0:00                 ` Robert Dewar
2000-10-18  0:00                   ` Robert A Duff
2000-10-19  3:08                     ` Overloading "in" (was: disjoint ranges ?) Jeff Carter
2000-10-19  0:00                       ` Ehud Lamm
2000-10-21  0:00                       ` Robert Dewar
2000-10-21  0:00                         ` Jeff Carter
2000-10-16  0:00               ` disjoint ranges ? Robert Dewar
2000-10-13  0:00     ` Philippe Torres
2000-10-13  0:00 ` wayne lydecker
2000-10-13  0:00   ` wayne lydecker
2000-10-13  0:00   ` Lao Xiao Hai
2000-10-23  0:00     ` Charles Hixson
2000-10-24  0:00       ` dmitry6243
2000-10-13  0:00 ` Lao Xiao Hai
2000-10-14  3:17   ` Robert Dewar
2000-10-16  0:00   ` Robert A Duff
2000-10-24  0:00 ` Andrew Cooke
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox