axiom-developer
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Axiom-developer] Re: Units and dimensions


From: Ralf Hemmecke
Subject: Re: [Axiom-developer] Re: Units and dimensions
Date: Sat, 19 Aug 2006 19:34:01 +0200
User-agent: Thunderbird 1.5.0.5 (X11/20060719)

So Length, Length*Time^(-1) etc. are examples for such monomials.
That's where I get in trouble.  (Well, one of the places.)  Length IS
basic in the SI system, but Length/Time is a different dimension from
Length OR Time and is not basic.  It's COMPOSED of basic dimensions,
but that could be said of every derived dimension in a complete system.

I think what Ralf meant is that the *derived* dimensions form a group, not the
basic dimensions.

Right, and as such they must form a domain where all the group operations are implemented. Informally, one can think of that domain (of "derived dimension") as a container that has as its elements powerproducts (negative powers allowed) of BasicDimensions.

I somehow have a slight feeling that the trouble comes when the design should be such that the compiler is doing the dimension analysis. For that we have to think a bit whether it is possible at all.

However, Length/Time^2 * Time^2 is composed of two derived dimensions -
Length/Time^2 and Time^2 - but will simplify to a basic dimension.  I was
thinking some kind of conditional definition of type output for those
operators - if the resulting dimensional expression is in the basic
dimensions list for the system, return type BasicDimension, else the result
is a DerivedDimension.

No, the concept here is called "retract". You'd have an operation

retractIfCan: DerivedDimension -> Union("failed", BasicDimension)

Sorry, but I really don't quite understand, why one would need such a retract at all. But maybe I'll learn more while implementing something and getting feedback.

(I know, Ralf, that you hate that return type, but so far we don't have
Partial...)

Martin, you are right. ;-)

Ralf




reply via email to

[Prev in Thread] Current Thread [Next in Thread]