comp.lang.ada
 help / color / mirror / Atom feed
From: Wes Groleau <wesgroleau@despammed.com>
Subject: Re: Announce: The Ultimate SI Units Cracker
Date: Thu, 12 Sep 2002 09:06:09 -0500
Date: 2002-09-12T09:06:09-05:00	[thread overview]
Message-ID: <3D809F51.299A6634@despammed.com> (raw)
In-Reply-To: mailman.1031818621.20810.comp.lang.ada@ada.eu.org


> Yes - it's run-time consuming since the dimension is an attribute

Since Ada has a 'special' meaning for attribute, perhaps
'component' or 'discriminant' would be better.

Anyway, looks nice.  I once implemented a package with
the 'derived types' approach, and I agree that creating
all the operations is a pain.  I had a generic for each operator,
but it was Ada 83, so the instantiations had to be in the spec,
making the spec over 4,000 lines long.  Someone with a little
authority thought a 4,000 line spec was unacceptable, so he
rewrote it non-generic, reducing the spec down to "only" 3,000
lines (and increasing the body from less than 50 to over 5,000).

I like the discriminant approach, but it does have another
disadvantage in that a lot of numeric operations are lost.

You can't query 'First, 'Last, 'Small, etc.  But maybe when
dealing with physical units those don't really matter much.
And of course the package can provide substitutes.

You also can't provide such a type as a generic formal
where a float or fixed is expected.  (Speaking of which,
perhaps a fixed-point version of SI would be useful to someone.)

Ada 95 extended the concept of attributes being functions
to letting them be procedures ('Write / 'Read), and allowed
programmers to redefine/override 'Write and 'Read.  I am curious
whether overriding/creating other attributes was considered.
Obviously, like operator overloading, it could easily be
used to obfuscate, but it could be very useful to be able
to define 'first and such for things like SI and Rational.

It would also be nice to be able to define a type conversion.

function Float (T : SI) return Float is ....

What I'm getting at is the ability to define a private type
so that it has all the attributes and operations of a numeric
type and can be use as a generic parameter to a numeric package.

I understand that many packages take advantage of the implementation
of a float for efficiency, but there could be an implementation
permission that allows the compiler to reject an instantiation
where this is the case--or issue a warning.


-- 
Wes Groleau
http://freepages.rootsweb.com/~wgroleau



  parent reply	other threads:[~2002-09-12 14:06 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-09-12  8:11 Announce: The Ultimate SI Units Cracker Grein, Christoph
2002-09-12 10:14 ` Preben Randhol
2002-09-12 10:50 ` Jeffrey Creem
2002-09-12 14:06 ` Wes Groleau [this message]
2002-09-12 17:06   ` Randy Brukardt
2002-09-13 15:20     ` Wes Groleau
2002-09-13 20:54       ` Randy Brukardt
2002-09-13 22:09   ` Dmitry A.Kazakov
2002-09-13 15:26     ` Wes Groleau
2002-09-15  6:21       ` Dmitry A.Kazakov
2002-09-15  0:24         ` Mark Biggar
2002-09-16  1:35           ` Dmitry A.Kazakov
  -- strict thread matches above, loose matches on Subject: below --
2002-09-12 11:51 Grein, Christoph
2002-09-12 11:59 Grein, Christoph
2002-09-13  4:53 Grein, Christoph
2002-09-13 14:34 ` Ira Baxter
2002-09-13 20:50   ` Stephen Leake
2002-09-16 10:22   ` Fraser Wilson
2002-09-13 15:41 ` Wes Groleau
2002-09-13  5:34 Grein, Christoph
replies disabled

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