From: mab@dst17.wdl.loral.com (Mark A Biggar)
Subject: Re: Types with physical dimension
Date: Tue, 4 Oct 1994 19:45:10 GMT
Date: 1994-10-04T19:45:10+00:00 [thread overview]
Message-ID: <1994Oct4.194510.22580@wdl.loral.com> (raw)
In-Reply-To: EACHUS.94Oct4115107@spectre.mitre.org
In article <EACHUS.94Oct4115107@spectre.mitre.org> eachus@spectre.mitre.org (Robert I. Eachus) writes:
>In article <SAL714.94Oct3133110@rs710.gsfc.nasa.gov> sal714@rs710.gsfc.nasa.gov (Stephen A. Leake) writes:
> > Very early on, I started to write a package that enforced
> > dimensionality; I defined METERS, METERS_PER_SECOND, etc. I quickly
> > discovered that even simple equations need up to cubic dimensions,
> > in all combinations of length, mass and time. Defining all these
> > types and the associated operators was far too time-consuming to be
> > worth it. So now I rely on code reviews and careful testing.
> > The moral; strong typing is nice, but is no substitute for careful design
> > and thorough testing.
> Paul Hilfinger did a nice paper on using discriminants to check
>dimensionality. I don't have the paper in front of me but it works
>something like this:
> type Measure(Length,Mass,Time: Integer) is record
> Value: Float;
> end record;
> subtype Meters is Measure(1,0,0);
> subtype Kilograms is Measure(0,1,0);
> subtype Time is Measure(0,0,1);
> ...etc.
> The only problem I had was with square roots. I thought about
>changing the package to double all the dimensional values, so length
>would be (2,0,0), but I never did.
Unless you are doing some really wierd physics, the square root of a base
dimension doesn't really make any sense. So just raise CONSTRAINT_ERROR
whenever any of the dimensions is odd.
--
Mark Biggar
mab@wdl.loral.com
next prev parent reply other threads:[~1994-10-04 19:45 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
1994-09-27 22:18 Types with physical dimension Paul Graham
1994-09-28 13:59 ` Robert Dewar
1994-09-30 2:06 ` R_Tim_Coslet
1994-10-03 17:31 ` Stephen A. Leake
1994-10-04 11:51 ` Robert I. Eachus
1994-10-04 19:45 ` Mark A Biggar [this message]
[not found] ` <CxBBx8.7L@irvine.com>
1994-10-13 22:15 ` gamache
1994-10-12 3:43 ` Matt Kennel
1994-10-04 14:56 ` Robert Dewar
1994-10-05 14:53 ` Bob Gilbert
1994-10-05 8:38 ` Jean-Pierre Rosen
1994-10-05 10:35 ` Stephen J Bevan
1994-10-05 13:17 ` Jean-Pierre Rosen
1994-10-05 15:48 ` Norman H. Cohen
-- strict thread matches above, loose matches on Subject: below --
1994-09-28 10:55 Simtel20 Transfer
1994-09-28 18:56 ` Mark A Biggar
1994-10-04 2:06 ` lmiller
1994-09-28 19:28 Paul Pukite
[not found] <GRAHAM.94Sep27181841@canopus.clsi.com>
1994-09-28 17:36 ` William Brennan
1994-09-28 21:41 ` Tucker Taft
1994-09-29 4:11 ` Robert Dewar
1994-09-29 11:19 ` Peter Hermann
1994-09-30 10:17 ` Dr John Stockton
1994-10-03 4:37 ` Robert Dewar
1994-09-29 13:37 ` Tucker Taft
1994-10-03 4:40 ` Robert Dewar
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox