度で角度を扱う場合、度数記号(°
)を後置演算子として使用するように定義する必要があります。Haskellで後置演算子を定義するにはどうすればよいですか?
let o = pi/180
とこのようにそれを使用します:現在、私は(GHCiの中で)この行を使用し
tan(11*o)
が、私はちょうど行きたい:より明確である
tan 11°
。度演算子は、 'tan
'と他の関数より高い優先順位を持つ必要があります。
私が持っている最も近いです:
let (°) x _ = x*pi/180
は次のように使用:
tan(11°0)
が、デフォルトの優先順位は括弧がまだ必要とされていること、及びダミー番号と、この代替案があります私が現在使っているものよりも悪い。
"degree演算子は、' tan'や他の関数よりも優先順位が高いはずです。 < - それはうまくいかないでしょう、関数のアプリケーションは、言語仕様によって最も高い優先順位を持っています。 –
度を表すnewtypeで新しい数値型(Doubleやその他の値をラップする)を単純に定義しないでください。もちろん、等価性を定義したい場合は、度の "モジュラー"な性質に注意を払う必要があります。 –
ハスケルは、あなたが書いたことに慣れているようなものを作ることのできる種類の言語ではありませんそれ。 PerlやPythonとは異なり、Haskellのインフィクス構文は実際は非常にトリミングされていてシンプルですが、このような単純な基盤でも非常に効率的な簡略化が可能で、多くの括弧物事を読めるようにするしかし、後者の点は、これらのかなり厳密な構文解析ルールがあることの1つにあります。 – leftaroundabout