F#的测量单位是否独一无二? [关闭]
-
01-07-2019 - |
题
我正在阅读Andrew Kennedy的博客文章系列 F#中的计量单位,在很多情况下都很有意义。还有其他语言有这样的系统吗?
编辑:更清楚一点,我指的是灵活的测量单位,您可以随意定义自己的测量系统。
解决方案
TI-89 BASIC是否计算在内?输入 54_kg *(_ c ^ 2)
,它将以焦耳为您提供答案。
除此之外,我不记得任何内置它的语言,但任何具有体面OO的语言都应该让你自己动手。这意味着其他人可能已经做过了。
谷歌证实了这一点。例如,这是Python中的一个。可以很容易地修改 __ repr __
以选择最合适的派生单位等。
CPAN为Perl提供了几个模块:物理::单位, Data ::尺寸, Class :: Measure , Math :: Units :: PhysicalValue ,以及其他一些将转换但不真正将值与单位组合在一起的其他人。
其他提示
C ++以 boost :: units的形式拥有它。
我不确定这是否真的很重要,但我的HP-48计算器上的 RPL
系统确实有类似的功能。我可以写 40_gal 5_l +
并得到156.416升的正确答案。
我相信我看到 Fortress 支持这一点,我会看看能不能找到一个链接。
我找不到具体的链接,但语言规范在几个地方提到了它。 1.0语言规范还说,维度和单位暂时从规范中删除(连同一大堆其他功能)以匹配当前的实现。这是一项正在进行中的工作,所以我猜情况正在不断变化。
F#是支持此功能的第一种主流语言。
Nemerle有比F#更好的东西!
你应该检查一下: http://rsdn.ru/forum/ src / 1823225.flat.aspx#1823225 。
真的很棒。 你可以在这里下载: http://rsdn.ru/File/27948/Oyster .Units.0.06.zip
一些例子:
def m3 = 1 g;
def m4 = Si.Mass(m1);
WriteLine(<*>quot;Mass in SI: $m4, in CGS: $m3");
def x1 = Si.Area(1 cm * 10 m);
WriteLine(<*>quot;Area of 1 cm * 10 m = $x1 m");
我特别为C#中的单位创建了QuantitySystem库,但它不是编译时检查
但我试图让它按照我想要的方式运行
它也支持扩展,因此您可以定义您的唯一单位
http://QuantitySystem.CodePlex.com
它也可以区分Torque和Work :) [这对我很重要]
库方法是从Dimension到单位 到目前为止我所看到的只是单位接近。
我很确定阿达有它。
我确信你能够通过 仔细 对大多数动态语言(javascript,python,ruby)执行此操作 猴子修补一些基础 - 类。在使用英制测量时,您可能会遇到问题。