comp.lang.ada
 help / color / mirror / Atom feed
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





  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