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
next prev parent 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