測定単位は F# に固有のものですか?[閉まっている]
-
01-07-2019 - |
質問
私はアンドリュー・ケネディのブログ投稿シリーズを読んでいました。 F# の測定単位 そして多くの場合、それは非常に理にかなっています。このようなシステムを持つ言語は他にありますか?
編集:より明確に言うと、独自に任意に定義できる柔軟な測定単位システムのことです。
解決
TI-89 BASICはカウントされますか?入力 54_kg * (_c^2)
ジュール単位で答えが得られます。
それ以外に、これが組み込まれている言語は思い出せませんが、適切な OO を備えた言語であれば、独自の言語を簡単に作成できるはずです。つまり、他の誰かがすでにそうしている可能性があります。
Googleはそれを認めています。例えば、 これは Python のものです. __repr__
最も適切な派生単位などを選択するように簡単に修正できます。
CPAN には Perl 用のモジュールがいくつかあります。 物理学::単位, データ::ディメンション, クラス::メジャー, Math::Units::PhysicalValue, 、および変換はしますが、値と単位を実際には組み合わせないその他のいくつかの機能。
他のヒント
Nemerle は 2006 年に測定単位をコンパイラ チェックしました。
http://nemerle.org/forum.old/viewtopic.php?t=265&view=previous&sid=00f48f33fafd3d49cc6a92350b77d554
C++ には、次の形式でそれがあります。 ブースト::ユニット.
これが本当に重要かどうかはわかりませんが、 RPL
私の HP-48 電卓のシステムにも同様の機能があります。書くことができます 40_gal 5_l +
正解は 156.416 リットルです。
私はそれを見たと信じています 要塞 これをサポートしてください。リンクが見つかるかどうか確認してみます。
具体的なリンクは見つかりませんが、言語仕様にはいくつかの箇所で言及されています。1.0 言語仕様では、現在の実装に合わせるために、寸法と単位が (その他の機能全体とともに) 仕様から一時的に削除されたとも述べられています。現在進行中の作業なので、状況は流動的だと思います。
F# は、この機能をサポートする最初の主流言語です。
ユニットに関する Java 仕様もあります。 http://jcp.org/ja/jsr/detail?id=275 ここからすでに使用できます http://jscience.org/
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");
特に C# のユニット用に QuantitySystem ライブラリを作成しましたが、コンパイル時のチェックは行われません
しかし、私はそれを望みどおりに実行しようとしました
拡張もサポートしているため、独自の単位を定義できます
http://QuantitySystem.CodePlex.com
また、トルクと仕事量を区別することもできます:) [これは私にとって重要でした]
ライブラリのアプローチは、これまでに私が見たすべてのアプローチのみに近づいているすべてのものです。
エイダがそれを持っていると確信しています。
ほとんどの動的言語 (JavaScript、Python、Ruby) でこれを実行できると確信しています。 気をつけて いくつかの基本クラスにモンキーパッチを適用します。ただし、帝国単位での測定を行う場合には問題が発生する可能性があります。