comp.lang.ada
 help / color / mirror / Atom feed
From: Robert Dewar <robert_dewar@my-dejanews.com>
Subject: Re: non-consecutive ranges
Date: 1999/05/01
Date: 1999-05-01T00:00:00+00:00	[thread overview]
Message-ID: <7gesqf$pfc$1@nnrp1.dejanews.com> (raw)
In-Reply-To: 7gct90$7hr$1@nnrp1.dejanews.com

In article <7gct90$7hr$1@nnrp1.dejanews.com>,
  vlight@my-dejanews.com wrote:
>
>
> is there a way to define a variable to have a non-consecutive range?
> for instance, let's say i wanted to define variable X with a range
> from 2 to 1024 and 4096 to 8192.
>
>   X : Integer range (1 .. 1024) and (4096 .. 8192);
>
> or something similar to this declaration.  in addition to define
> non-consecutive ranges, could i define a range of odd numbers? even
> numbers?

Or in general numbers for which the arbitrarily complicated predicate
P holds. If you put it this way, you see that the language has to
define some more or less arbitrary cut off point on what is implemented
as part of the fundamental syntax. In C, not even simple ranges make
the cutoff. In Ada, simple ranges do, but not split ranges (or odd or
even etc).

In ABC, Lambert Meerten's teaching language, if I remember right, you
can define arbitrary assertions that are associated with types. Any
attempt to assign a value executes the assertion, and causes a run time
failure if the assertion fails.

That's actually quite a nice extension, which can be done as an
attribute (and therefore is an "allowed" extension).

  type Odd_Integer is new Integer;

  procedure Check (X : Odd_Integer) is
  begin
     if X mod 2 = 1 then
        Raise_Exception
          (Constraint_Error'Identity,
           "even value assigned to Odd_Integer");
     end if;
  end Check;

  for Odd_Integer'Domain_Check use Check;

Then Domain_Check would be called whenever a value of type Odd_Integer
was modified. Another formulation would be

  function Check (X : Odd_Integer) return Odd_Integer;

which would have the opportunity of modifying the assigned value before
the assignment.

Thoughts?

Useful feature?
Silly bell and whistle?

[Above my desk when working on SPITBOL was a large, very elaborate
 sign in caligrophy that said

        DO NOT EMBELLISH

          :-) ]

Robert Dewar

-----------== Posted via Deja News, The Discussion Network ==----------
http://www.dejanews.com/       Search, Read, Discuss, or Start Your Own    




  parent reply	other threads:[~1999-05-01  0:00 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1999-04-30  0:00 non-consecutive ranges vlight
1999-04-30  0:00 ` dennison
1999-04-30  0:00 ` Tucker Taft
1999-04-30  0:00   ` dennison
1999-05-01  0:00 ` Ehud Lamm
1999-05-01  0:00   ` bglbv
1999-05-02  0:00     ` Ehud Lamm
1999-05-01  0:00 ` Robert B. Love 
1999-05-04  0:00   ` fraser
1999-05-01  0:00 ` Robert Dewar [this message]
1999-05-01  0:00   ` dvdeug
1999-05-03  0:00 ` Josh Highley
replies disabled

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