From: Stephen Leake <stephen.a.leake.1@gsfc.nasa.gov>
Subject: Re: Announce: Grace project site operational
Date: 17 May 2002 11:27:32 -0400
Date: 2002-05-17T15:34:36+00:00 [thread overview]
Message-ID: <uhel623rv.fsf@gsfc.nasa.gov> (raw)
In-Reply-To: ubsbevmsz.fsf@FWILSON.i-did-not-set--mail-host-address--so-shoot-me
Fraser Wilson <newsfraser@blancolioni.org> writes:
> Well, I happened to have some tools lying around that make writing
> this sort of thing really easy, so I knocked together a prototype this
> afternoon. It takes definitions like "unit Length in Metres",
> "Velocity is Length / Time" and "Force in Newtons is Mass *
> Acceleration". The result is an Ada package with a bunch of type X is
> new Float declarations and all the given operations implemented (using
> pragma Inline; maybe Intrinsic works too).
Great! I'd like to see it. Are your tools (or at least the final tool)
open source?
> Unfortunately, there's a wee problem with magnitude changes; say I
> add the following:
>
> function "*" (Left : Float; Right : Metres) return Metres;
Don't use Float. Make the base float type a generic, so I can
instantiate it with my own float type. That allows me to choose single
or double precision, etc.
And 'Metres' is spelled 'Meter'
(http://physics.nist.gov/cuu/Units/units.html).
Hmm, not sure whether I like the plural here or not. And my personal
standard would require 'Meter_Type', but I'm willing to relax that for
this package.
> Then for M : Metres, M := 2.0 * M is ambiguous, because of
> Standard."*"
>
> What's more, Standard."*" has no meaning in this domain, but there's
> no way (as far as I know) of getting rid of it.
You are correct that we need these "scaling" operators. I remember
this problem now (I did start down this road once, a long time ago :).
However, I don't mind saying
M := Float_Type'(2.0) * M;
The whole point is to be clear about units; bare numbers need to be
qualified with the appropriate unit type, even if it is unitless.
> If I don't define a magnitude changing function, then M := 2.0 * M
> works, but M := F * M doesn't (for F : Float).
Right, not good.
> The way to fix all this would be to make the types private, and
> supply conversion functions. I've always found that ugly though.
Right, even worse! You lose literals for all the types.
--
-- Stephe
next prev parent reply other threads:[~2002-05-17 15:27 UTC|newest]
Thread overview: 158+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-05-08 2:38 Announce: Grace project site operational Ted Dennison
2002-05-08 2:48 ` Larry Kilgallen
2002-05-08 12:46 ` Ted Dennison
2002-05-08 13:33 ` Marin David Condic
2002-05-09 19:54 ` Randy Brukardt
2002-05-09 20:22 ` Marin David Condic
2002-05-10 14:59 ` Ted Dennison
2002-05-10 18:54 ` Randy Brukardt
2002-05-10 14:17 ` Larry Hazel
2002-05-10 14:46 ` David C. Hoos
2002-05-10 15:38 ` Marin David Condic
2002-05-11 14:17 ` Preben Randhol
2002-05-11 16:58 ` martin.m.dowie
2002-05-11 18:55 ` William C. Brennan
2002-05-11 20:10 ` Preben Randhol
2002-05-12 8:53 ` martin.m.dowie
2002-05-13 13:18 ` Marin David Condic
2002-05-13 13:07 ` Marin David Condic
2002-05-14 15:18 ` Ted Dennison
2002-05-14 15:45 ` Marin David Condic
2002-05-15 19:56 ` Hyman Rosen
2002-05-16 13:44 ` Stephen Leake
2002-05-14 17:02 ` Martin Dowie
2002-05-15 14:57 ` Ted Dennison
2002-05-15 15:31 ` Marin David Condic
2002-05-16 21:57 ` tmoran
2002-05-17 1:55 ` tmoran
2002-05-17 13:12 ` Marin David Condic
2002-05-18 1:44 ` tmoran
2002-05-15 15:54 ` Martin Dowie
2002-05-15 17:33 ` Larry Kilgallen
2002-05-15 17:04 ` David C. Hoos
2002-05-15 22:59 ` tmoran
2002-05-16 13:36 ` Marin David Condic
2002-05-16 13:43 ` Ted Dennison
2002-05-16 14:51 ` Marin David Condic
2002-05-17 15:34 ` Stephen Leake
2002-05-20 13:47 ` Marin David Condic
2002-05-21 14:23 ` Stephen Leake
2002-05-21 17:24 ` Ted Dennison
2002-05-21 17:52 ` Marin David Condic
2002-05-22 16:20 ` Stephen Leake
2002-05-28 8:22 ` Martin Dowie
2002-05-22 16:16 ` Stephen Leake
2002-05-16 11:06 ` John English
2002-05-16 13:52 ` Stephen Leake
2002-05-16 16:40 ` Hyman Rosen
2002-05-14 17:50 ` tmoran
2002-05-14 18:07 ` Preben Randhol
2002-05-14 18:12 ` Preben Randhol
2002-05-14 18:52 ` Hyman Rosen
2002-05-15 8:17 ` Dmitry A. Kazakov
2002-05-15 18:30 ` Hyman Rosen
2002-05-16 9:16 ` Dmitry A. Kazakov
2002-05-16 19:42 ` Hyman Rosen
2002-05-17 8:35 ` Dmitry A. Kazakov
2002-05-20 17:08 ` Hyman Rosen
2002-05-21 8:34 ` Dmitry A. Kazakov
2002-05-21 15:57 ` Hyman Rosen
2002-05-22 7:48 ` Dmitry A. Kazakov
2002-05-22 11:40 ` Georg Bauhaus
2002-05-22 15:05 ` Dmitry A. Kazakov
2002-05-22 16:14 ` Georg Bauhaus
2002-05-22 16:31 ` Hyman Rosen
2002-05-23 11:40 ` Dmitry A. Kazakov
2002-05-15 8:44 ` Martin Dowie
2002-05-15 18:15 ` Stephen Leake
2002-05-15 18:39 ` Darren New
2002-05-15 19:34 ` Hyman Rosen
2002-05-15 23:52 ` Darren New
2002-05-16 7:39 ` Hyman Rosen
2002-05-16 15:35 ` Darren New
2002-05-16 17:55 ` Brian Rogoff
2002-05-16 13:35 ` Stephen Leake
2002-05-16 15:50 ` Darren New
2002-05-16 16:28 ` Hyman Rosen
2002-05-17 15:14 ` Stephen Leake
2002-05-17 16:08 ` Darren New
2002-05-17 16:41 ` Fraser Wilson
2002-05-17 16:43 ` Stephen Leake
2002-05-17 16:24 ` Marin David Condic
2002-05-17 15:03 ` Fraser Wilson
2002-05-17 15:27 ` Stephen Leake [this message]
2002-05-17 16:20 ` Fraser Wilson
2002-05-17 16:46 ` Stephen Leake
2002-05-18 6:14 ` Simon Wright
2002-05-17 15:44 ` Mark Biggar
2002-05-17 16:09 ` Fraser Wilson
2002-05-17 16:48 ` Stephen Leake
2002-05-17 21:11 ` Mark Biggar
2002-05-21 8:45 ` Dmitry A. Kazakov
2002-05-15 19:24 ` Hyman Rosen
2002-05-15 23:33 ` tmoran
2002-05-16 13:48 ` Stephen Leake
2002-05-16 14:39 ` Martin Dowie
2002-05-14 19:10 ` tmoran
2002-05-14 19:58 ` Preben Randhol
2002-05-11 19:42 ` Jeffrey Carter
2002-05-11 20:16 ` Preben Randhol
2002-05-11 19:49 ` Jeffrey Carter
2002-05-13 15:44 ` Ted Dennison
2002-05-13 16:16 ` Marin David Condic
2002-05-13 17:10 ` Stephen Leake
2002-05-13 19:07 ` Preben Randhol
2002-05-13 20:21 ` Marin David Condic
2002-05-14 15:00 ` Ted Dennison
2002-05-14 16:00 ` Stephen Leake
2002-05-14 16:30 ` Preben Randhol
2002-05-13 19:16 ` Jeffrey Carter
2002-05-13 19:19 ` Simon Wright
2002-05-11 1:23 ` Richard Riehle
2002-05-11 12:27 ` Marc A. Criley
2002-05-08 16:12 ` Hyman Rosen
2002-05-08 16:31 ` Larry Kilgallen
2002-05-08 17:16 ` Marin David Condic
2002-05-09 9:50 ` Larry Kilgallen
2002-05-09 13:32 ` Marin David Condic
2002-05-09 13:54 ` Ted Dennison
2002-05-09 14:23 ` Mário Amado Alves
2002-05-09 20:02 ` Randy Brukardt
2002-05-09 20:44 ` Marin David Condic
2002-05-10 13:06 ` Hyman Rosen
2002-05-10 16:23 ` Preben Randhol
2002-05-10 18:57 ` Hyman Rosen
2002-05-10 18:58 ` Randy Brukardt
2002-05-10 8:35 ` Dmitry A. Kazakov
2002-05-10 9:12 ` GRACE web site (was Announce: Grace project site operationa)l David C. Hoos, Sr.
2002-05-10 14:33 ` Ted Dennison
2002-05-10 16:17 ` Preben Randhol
2002-05-13 14:07 ` Ted Dennison
2002-05-13 16:04 ` Darren New
2002-05-10 19:00 ` Announce: Grace project site operational Randy Brukardt
2002-05-13 8:10 ` Dmitry A. Kazakov
2002-05-10 19:35 ` Ted Dennison
2002-05-13 8:01 ` Dmitry A. Kazakov
2002-05-10 10:25 ` Mário Amado Alves
2002-05-09 20:53 ` Simon Wright
2002-05-10 8:29 ` Dmitry A. Kazakov
2002-05-14 15:03 ` John English
2002-05-15 8:34 ` Dmitry A. Kazakov
2002-05-15 10:38 ` John English
2002-05-15 11:18 ` Dmitry A. Kazakov
2002-05-15 18:10 ` Stephen Leake
2002-05-09 14:03 ` Wes Groleau
2002-05-09 15:38 ` Marin David Condic
2002-05-11 18:10 ` William C. Brennan
2002-05-08 22:00 ` Ted Dennison
2002-05-09 5:39 ` Hyman Rosen
2002-05-09 14:21 ` Wes Groleau
2002-05-25 22:03 ` Robert I. Eachus
2002-05-08 14:32 ` Stephen Leake
2002-05-10 14:46 ` Ted Dennison
2002-05-10 7:47 ` fraser
2002-05-10 14:55 ` Ted Dennison
-- strict thread matches above, loose matches on Subject: below --
2002-05-15 9:58 Grein, Christoph
2002-05-15 16:12 ` Ted Dennison
2002-05-15 11:32 Grein, Christoph
2002-05-15 13:41 ` Dmitry A. Kazakov
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox