OCamlで自分が定義した演算子の結合性は？


タイトルのようにOCamlで自分が定義した演算子の結合性を質問したいと思います。

ためしたこと：

[code]

    let (^-^) a b = a - b;;
    3 ^-^ 2 ^-^ 1;;
    - : int = 2
    
[/code]

ここは右結合ですね、

補充：

[code]

    let (||>) a b = a - b;;
    3 ||> 2 ||> 1;;
    - : int = 0
    
[/code]

なぜここでは左結合になるでしょう？

どんなルールで結合性が決まるのですか？




定義した演算子の名前がどの記号から始まるかによって、優先度と結合性が変わります。詳しくは OCaml のマニュアルをご覧ください:
<https://ocaml.org/manual/expr.html#ss%3Aprecedence-and-associativity>

今回の場合だと、`(^-^)` は `^` から始まるので右結合、`(||>)` は `|` から始まるので左結合です。




定義した演算子の名前がどの記号から始まるかによって、優先度と結合性が変わります。詳しくは OCaml のマニュアルをご覧ください:
<https://ocaml.org/manual/expr.html#ss%3Aprecedence-and-associativity>

今回の場合だと、`(^-^)` は `^` から始まるので右結合、`(||>)` は `|` から始まるので左結合です。

