20

我正在阅读 Andrew Kennedy 的关于F# 中的度量单位的系列博文,在很多情况下这很有意义。有没有其他语言有这样的系统?

编辑:更清楚地说,我的意思是灵活的测量单位系统,您可以在其中任意定义自己的。

4

11 回答 11

11

TI-89 BASIC 算不算?输入54_kg * (_c^2),它会给你一个焦耳的答案。

除此之外,我不记得有任何语言内置了它,但是任何具有体面的 OO 的语言都应该让你自己的语言变得简单。这意味着其他人可能已经这样做了。

谷歌确认。例如,这是 Python 中的一个__repr__可以很容易地修改以选择最合适的派生单位等。

CPAN 有几个用于 Perl 的模块:Physics::UnitData::DimensionsClass::MeasureMath::Units::PhysicalValue以及其他一些可以转换但不会真正将值与单位结合起来的模块。

于 2008-09-20T05:45:34.203 回答
7

Nemerle 在 2006 年进行了编译器检查的计量单位。

http://nemerle.org

http://nemerle.org/forum.old/viewtopic.php?t=265&view=previous&sid=00f48f33fafd3d49cc6a92350b77d554

于 2008-11-17T00:17:21.283 回答
7

C++ 有它,形式为boost::units

于 2008-11-17T01:13:25.820 回答
4

我不确定这是否真的很重要,但RPL我的 HP-48 计算器上的系统确实具有类似的功能。我能写出40_gal 5_l +156.416 升的正确答案。

于 2008-09-20T05:34:07.320 回答
4

我相信我看到堡垒支持这个,我看看能不能找到链接。

我找不到特定的链接,但语言规范在几个地方提到了它。1.0 语言规范还说,尺寸和单位暂时从规范中删除(以及一大堆其他特性)以匹配当前的实现。这是一项正在进行的工作,所以我想事情在不断变化。

于 2008-09-20T05:35:57.613 回答
4

F# 是第一个支持此功能的主流语言。

于 2008-10-19T02:29:01.140 回答
2

在http://jcp.org/en/jsr/detail?id=275上还有一个单位的 Java 规范,您已经可以从这里使用它http://jscience.org/

于 2008-11-17T00:13:56.707 回答
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");
于 2011-03-08T09:09:15.020 回答
1

我很确定艾达有它。

于 2008-09-20T05:36:09.703 回答
1

好吧,我专门为 C# 中的单元制作了 QuantitySystem 库,但是它不是编译时检查

但我试图让它按照我的意愿运行

它还支持扩展,因此您可以定义您的独特单位

http://QuantitySystem.CodePlex.com

它也可以区分扭矩和工作:) [这对我很重要]

图书馆的方法是从维度到单位,到目前为止我所看到的都是单位方法。

于 2009-06-14T23:02:27.850 回答
0

我相信您可以通过仔细地猴子修补一些基类来使用大多数动态语言(javascript、python、ruby)来做到这一点。但是,在使用英制测量时,您可能会遇到问题。

于 2008-11-17T00:27:02.590 回答