2017-09-22 12 views
1

同じ次元の単なる乗算器である測定単位を自動変換できることは素晴らしいことです。 (kg - > g、cm - > mm、km - > m)。私は、オンラインで何を読んでから:F#(キロメートル - >メートル)での自動計測単位の変換

https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/units-of-measure https://fsharpforfunandprofit.com/posts/units-of-measure/

私はヘルパー関数なしでこの作業を持ってすることはできないようです。私の見解では、これらの変換は計算を汚染します。私はこのようなものが動作するようにしたい:

[<Measure>] type m 
[<Measure>] type km = 1000 * m 

以下のいずれかが動作しません。

let distance = 1000 * 10**3 <m> 

これは他の方法で達成できますか?

答えて

1

私はF#は分かりませんが、ええ、単位を丁寧に計算します。そのため、入力中にのみ値を変換する必要があります(たとえば、form file/stdinの読み込みなど)。計算は常に同じ単位で行い、メトリックシステムはここに入ります。最後に、結果をメトリックシステムから任意の単位に変換します。あなたはすべてが同じ単位であるが、最終的に、それはケースではないことが判明していること「を前提と」とき

それは後で

+0

問題に新しいユニットのサポートを追加するのは非常に簡単ですその方法は付属しています... 。測定の単位は素晴らしいです、それらはより頻繁に使用されるべきです – s952163

+1

いいえ、私は散文として読むために私のコードにしたいです。 F#はそれで良いです。この特定の問題では、不必要な些細な変換なしで入力と計算を宣言したいと思います。私が紙の上でやっているのと同じです。紙の上に – Pasho

+0

あなたはあなたの質問からこの距離の事をしないだろう。あなたはスピード=距離/時間を行い、スピードを与えますが、距離とスピードの単位に基づいてスピードは異なります。私の理解のために、F#はまったく同じことをするでしょう。あなたの問題は何ですか? –

関連する問題