# 演算子 ## 中置演算子 ### `_+_`|R; O; A <: Add(R, O)|(x: A, y: R) -> O 加算を実行する。 ### `_-_`|R; O; S <: Sub(R, O)|(x: S, y: R) -> O 減算を実行する。 ### `*`|R; O; M <: Mul R, O|(x: M, y: R) -> O 乗算を実行する。 ### `/`|R; O; D <: Div(R, O)|(x: D, y: R) -> O 除算を実行する。 ## 中置アルファベット演算子 ### `and`(x: Bool, y: Bool) -> Bool and演算を実行する。 ### `or`(x: Bool, y: Bool) -> Bool and演算を実行する。 ## 前置演算子 ### `+_`|T <: Num|(x: T) -> T デフォルトではidと同じ。 ### `-_`|T <: Num|(x: T) -> T.Neg 例えば、Nat.`-`: Nat -> Negとなり、戻り値が違う。 ### `!`|T <: Immut|(x: T) -> `T!` 不変オブジェクトから可変オブジェクトを生成する。 この演算子自体はProceduralではなく、関数内でも使える。 ### `..`|T <: Ord|(x: T) -> Range T x終わりで下界のないRangeオブジェクトを生成する。 x..xはイテレータとしてxのみ返す。 ### `..<`|T <: Ord|(x: T) -> Range T x.. Range T x始まりで上界のないRangeオブジェクトを生成する。 ### |T <: Ord|(x: T)`<..` -> Range T