<div dir="ltr"><div>Pushed: <a href="https://github.com/Metaxal/measures#4-dimensions-and-contracts">https://github.com/Metaxal/measures#4-dimensions-and-contracts</a><br><br></div>Laurent<br></div><div class="gmail_extra">

<br><br><div class="gmail_quote">On Tue, Oct 29, 2013 at 12:14 PM, Laurent <span dir="ltr"><<a href="mailto:laurent.orseau@gmail.com" target="_blank">laurent.orseau@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div dir="ltr"><div><div>That's a good idea, and it's quite easy to implement using contracts!<br></div>Would something like this suit you? (this is currently working as is)<br><a href="https://gist.github.com/Metaxal/7212740" target="_blank">https://gist.github.com/Metaxal/7212740</a><span class="HOEnZb"><font color="#888888"><br>


</font></span></div><span class="HOEnZb"><font color="#888888"><div><br><br></div>Laurent<br><div><div><br></div></div></font></span></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><br><div class="gmail_quote">

On Tue, Oct 29, 2013 at 11:40 AM, Konrad Hinsen <span dir="ltr"><<a href="mailto:konrad.hinsen@fastmail.net" target="_blank">konrad.hinsen@fastmail.net</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>Laurent writes:<br>
<br>
 > So I've redesigned it somewhat, and now there are 2 calculation "modes":<br>
 > - The normal mode is pretty much like Frink (probably the one you want), which converts<br>
 > everything to base SI units. Conversion back to non base units can be done afterwards.<br>
<br>
</div>Well, what I really want is something else, but this is a useful<br>
feature nevertheless for a unit calculator. It would be nice though if<br>
the default units to which everything is converted were modifiable. SI<br>
units are fine for engineering and daily life, but neither for<br>
astrophysics nor for atomic-scale measurements.<br>
<br>
What I personally care about most is dimensional analysis as a means<br>
of ensuring program correctness. I want to be able to write<br>
<br>
  (define: (kinetic-energy (m : Mass) (v : Velocity) : Energy<br>
    (m* 1/2 m v v))<br>
<br>
and then compute the kinetic energy of a car as<br>
<br>
  (kinetic-energy (m 1000 kg) (m 90 km (h -1)))<br>
<br>
whereas a typical mistake such as<br>
<br>
  (kinetic-energy (m 1000 kg) (m 90 km h))<br>
<br>
would get caught by the type checker (ideally) or at run time. With a<br>
unit-converter approach such as the one you implemented, the erroneous<br>
call would be accepted and an error would be detected only if the<br>
result is later converted to an explicitly named energy unit.<br>
<div><div><br>
Konrad.<br>
____________________<br>
  Racket Users list:<br>
  <a href="http://lists.racket-lang.org/users" target="_blank">http://lists.racket-lang.org/users</a><br>
</div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div>