我在units of measurement in F#上阅读了Andrew Kennedy的博客文章系列,在很多情况下它很有意义。还有其他语言有这样的系统吗?
编辑:更清楚一点,我指的是灵活的测量单位,您可以随意定义自己的测量系统。
答案 0 :(得分:10)
TI-89 BASIC是否计算在内?输入54_kg * (_c^2)
,它将以焦耳为您提供答案。
除此之外,我不记得任何内置它的语言,但任何具有体面OO的语言都应该让你自己动手。这意味着其他人可能已经做过了。
谷歌证实了这一点。例如,here's one in Python。可以很容易地修改__repr__
以选择最合适的派生单位等。
CPAN为Perl提供了几个模块:Physics::Unit,Data::Dimensions,Class::Measure,Math::Units::PhysicalValue以及其他一些将转换但不真正将值与单元。
答案 1 :(得分:6)
Nemerle在2006年对编制单位进行了检查。
http://nemerle.org/forum.old/viewtopic.php?t=265&view=previous&sid=00f48f33fafd3d49cc6a92350b77d554
答案 2 :(得分:6)
C ++以boost::units的形式拥有它。
答案 3 :(得分:3)
我不确定这是否真的很重要,但HP-48计算器上的RPL
系统确实具有相似的功能。我可以写40_gal 5_l +
并得到156.416升的正确答案。
答案 4 :(得分:3)
我相信我看到Fortress支持这一点,我会看看能否找到链接。
我找不到具体的链接,但语言规范在几个地方提到了它。 1.0语言规范还说,维度和单位暂时从规范中删除(以及一大堆其他功能)以匹配当前的实现。这是一项正在进行中的工作,所以我觉得事情在不断变化。
答案 5 :(得分:2)
F#是支持此功能的第一种主流语言。
答案 6 :(得分:2)
http://jcp.org/en/jsr/detail?id=275的单位还有一个Java规范,你可以在这里使用http://jscience.org/
答案 7 :(得分:2)
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($"Mass in SI: $m4, in CGS: $m3");
def x1 = Si.Area(1 cm * 10 m);
WriteLine($"Area of 1 cm * 10 m = $x1 m");
答案 8 :(得分:1)
我特别为C#中的单位创建了QuantitySystem库,但它不是编译时检查
但我试图让它按照我想要的方式运行
它也支持扩展,因此您可以定义您的唯一单位
http://QuantitySystem.CodePlex.com
它也可以区分Torque和Work :) [这对我很重要]
库方法是从Dimension到单位 到目前为止我所看到的只是单位接近。
答案 9 :(得分:0)
我很确定阿达有它。
答案 10 :(得分:0)
我确信你能够通过 仔细 对大多数动态语言(javascript,python,ruby)执行此操作 猴子修补一些基础 - 类。在使用英制测量时,您可能会遇到问题。