this questionの後、私は何を考えるべきか分からない。なぜ "**"はOCamlの否定よりも緊密にバインドされませんか?
OCamlでは、-1.0 ** 2.0のようなものを入力すると(浮動小数点型が必要なため)、1.00を取得します。 standard order of operationsによれば、結果は-1でなければなりません(pythonのように)。
私は理由やOCamlの中に演算子の優先順位の明確な定義を見つけることができませんでした...
これが原因型システムのですか?またはpowの下にバインディングがあるという事実?
これは常に正しいとは限りませんし、質問とは関係ありません。たとえば、**は同じ文字で始まっていても*よりも優先度が高くなります。同じ文字を使用していても、単項マイナスは減算よりも優先順位が高くなります。実際、OPの問題は、単項マイナスがOCamlの乗法とべき乗よりも実際に優先順位が高いことです。単項マイナスが減算と同じ優先順位を持つと仮定した場合には到着することができませんでした。 – newacct
OCamlマニュアルのセクション6.7には、演算子の優先順位のテーブルがあります。すべてのバイナリ演算子は単項演算子よりも優先順位が低くなります(レコード、配列、文字列射影バイナリ演算子を除く)。算術演算の標準的な順序を取得し、プログラマが独自の演算子を定義できるようにするために、OCamlには追加の言語機能が必要であり、演算子は構文指向ではありません。 –