【问题标题】:Are units of measurement unique to F#? [closed]计量单位是 F# 独有的吗? [关闭]
【发布时间】:2010-09-11 13:22:27
【问题描述】:

我正在阅读 Andrew Kennedy 在units of measurement in F# 上的系列博文,在很多情况下这很有意义。有没有其他语言有这样的系统?

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

【问题讨论】:

标签: programming-languages f# functional-programming


【解决方案1】:

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

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

谷歌确认。例如,here's one in Python__repr__ 可以轻松修改以选择最合适的派生单位等。

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

【讨论】:

    【解决方案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");
    

    【讨论】:

      【解决方案3】:

      我特别为 C# 中的单元制作了 QuantitySystem 库,但是它没有编译时检查

      但我已经尝试让它按我想要的方式运行

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

      http://QuantitySystem.CodePlex.com

      它还可以区分扭矩和功 :) [这对我很重要]

      图书馆的方法是从维度到单位 到目前为止我所看到的只有单位接近。

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 还有PhysUnits-CT-Cpp11,一个小型的 C++11、C++14 标头库,用于编译时维度分析和单位/数量操作和转换。比 Boost.Units 更简单,仅依赖于标准 C++ 库,仅 SI,维度的积分幂
        【解决方案5】:

        我相信你可以通过小心猴子修补一些基础 -类。但在使用英制测量时,您可能会遇到问题。

        【讨论】:

          【解决方案6】:

          【讨论】:

            【解决方案7】:

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

            【讨论】:

              【解决方案8】:

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

              【讨论】:

                【解决方案9】:

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

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

                【讨论】:

                  【解决方案10】:

                  我很确定艾达有它。

                  【讨论】:

                  【解决方案11】:

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

                  【讨论】:

                  • 我指的是您可以定义任意测量单位的系统,但这仍然很有趣。
                  • 我手边没有我的 '48 手册,但我相信它也可以让你这样做。
                  猜你喜欢
                  • 2010-11-23
                  • 2018-03-25
                  • 2011-06-08
                  • 2010-10-31
                  • 1970-01-01
                  • 2013-03-12
                  • 1970-01-01
                  • 2014-02-27
                  • 2013-07-27
                  相关资源
                  最近更新 更多