From: "Dan'l Miller" <optikos@verizon.net>
Subject: Re: SI Units Checked and Unchecked
Date: Thu, 9 Aug 2018 06:47:46 -0700 (PDT)
Date: 2018-08-09T06:47:46-07:00 [thread overview]
Message-ID: <d628e94f-7ea0-4616-96a9-eb28ff6c9d6e@googlegroups.com> (raw)
In-Reply-To: <9381f30a-a957-4477-b037-b2d60041e83e@googlegroups.com>
On Thursday, August 9, 2018 at 7:44:13 AM UTC-5, AdaMagica wrote:
> This is a complete rework using Ada 2012 predicates.
>
> These packages provide a method to commpute with physical items in full generality under dimensional correctness checking. Dimensioned items are written in a natural style with the unit attached as a string.
>
> The base type is private:
>
> type Item is private;
>
> There are subtypes defined for all 7 base units defined in the SI system and many more:
>
> subtype Length is Item with Dynamic_Predicate => has_Dimension (Length, "m");
> subtype Volume is Item with Dynamic_Predicate => has_Dimension (Volume, "m**3");
> subtype Speed is Item with Dynamic_Predicate => has_Dimension (Speed , "m/s");
> subtype Force is Item with Dynamic_Predicate => has_Dimension (Force , "N");
> subtype Resistance is Item with Dynamic_Predicate => has_Dimension (Resistance, "Ohm");
>
> Variables are defined like this:
>
> A: Acceleration := 5.0*"m/s**2";
> V: Speed := 10.0*"km/h";
> T: Time := 1.0*"min";
> D: Length := V*T + 0.5*A*T**2;
>
> D := 1.0*"J"; will raise an exception.
Shouldn't the •entire• point of a units-of-measurement library (or feature of language) be compile-time errors, not run-time exceptions/errors.
> Units and prefixes are case sensitive (as defined in SI): "mS" is millisiemens, "Ms" is megasecond.
>
> Dimensioned IO is also provided:
>
> V := 1.0*"m/s"; -- output as
> Put (V); -- 1.0*m*s**(-1)
> Put (V, Dim => "km/h"); -- 3.6*km/h
> Put (V, Dim => "s"); -- will raise an exception
>
> Download from here:
> http://www.christ-usch-grein.homepage.t-online.de/Ada/Dimension/SI.html
>
> If you should use (even like) this method, please drop me a note with your findings.
I am an advocate of units-of-measure in programming.
I would be interested in a summary (or even better, an AI) that itemizes all the core-language obstacles in currently-standardized Ada to moving all the incompatible usages of units to be compile-time errors instead of raising exceptions.
next prev parent reply other threads:[~2018-08-09 13:47 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-08-09 12:44 SI Units Checked and Unchecked AdaMagica
2018-08-09 13:47 ` Dan'l Miller [this message]
2018-08-09 14:07 ` Dmitry A. Kazakov
2018-08-09 15:03 ` Dan'l Miller
2018-08-09 15:51 ` Dmitry A. Kazakov
2018-08-09 17:32 ` Dan'l Miller
2018-08-09 19:42 ` Dmitry A. Kazakov
2018-08-09 22:12 ` Dan'l Miller
2018-08-10 6:45 ` Dmitry A. Kazakov
2018-08-10 13:59 ` Dan'l Miller
2018-08-10 14:50 ` Dmitry A. Kazakov
2018-08-10 17:04 ` Dan'l Miller
2018-08-10 17:34 ` Dmitry A. Kazakov
2018-08-11 4:42 ` Paul Rubin
2018-08-11 5:46 ` Dmitry A. Kazakov
2018-08-11 19:57 ` Paul Rubin
2018-08-11 21:01 ` Dmitry A. Kazakov
2018-08-09 18:47 ` Paul Rubin
2018-08-09 19:13 ` Dan'l Miller
2018-08-09 14:31 ` AdaMagica
2018-08-09 15:19 ` Dan'l Miller
2018-08-09 16:07 ` Jeffrey R. Carter
2018-08-09 17:41 ` AdaMagica
2018-08-09 20:34 ` Jeffrey R. Carter
2018-08-10 9:13 ` AdaMagica
2018-08-10 20:20 ` Jeffrey R. Carter
2018-08-13 8:57 ` AdaMagica
2018-08-20 17:55 ` AdaMagica
2019-09-04 14:20 ` Shark8
2019-09-04 17:11 ` AdaMagica
2019-09-06 21:01 ` Shark8
2020-08-13 12:24 ` SI Units Checked and Unchecked - Completela overhauled version AdaMagica
-- strict thread matches above, loose matches on Subject: below --
2003-02-05 7:03 SI Units Checked and Unchecked 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