演算子記号

演算子の構文
  1. 前置: ¬A, -x
  2. 後置: n!, f' 微分
  3. 中置: いくらでも例はある
  4. 右項囲み: f(x) 適用 a[i] インデックス適用
  5. 両項囲み: (x, y) 内積, (x|y) 内積, <x|y> スカラー積, (C, D) 旧カンマ圏
  6. 右上付き: x2, f*, AT, x-1, f' 微分
  7. 右下付き: f*, f
  8. 三項: (- ? - : -)
  9. 単行囲み: [x] ガウス記号
  10. 真上付き: 時間微分、ハットをかぶせるゲルファント変換、平均値の上線、複素共役
  11. 真下付き: 台対象を表す下線

左項囲み、左上付き、左下付き、下線以外の真下付きはあまり使われない。が、最近僕はよく使う。特にインデキシングは左肩、左下も使う。

括弧は、グルーピング以外に演算子記号(の一部)として使われることがある。グルーピング括弧、演算子括弧、タプル囲み記号。

他に、無記号配置演算子記法もある。二項の指数、二項とみたインデックス適用など。演算子記号+引数リストの配置形式。無記号で配置のみで演算子適用を表現することもある。配置のシリアライズ方式も問題になる。"--" = "-1-2" = "_1_2" とかで書くか。

特殊な記号
  1. 演算子記号
  2. 空白区切り記号

演算子記号のオーバーロードは諸悪の根源!

セクション記法の構成素

[追記]Haskellのセクションは部分適用の記法のことだから、ここの記法は略式ラムダ構文だろう。λ(x, y)(x + y) = "- + -" [/追記]

  1. セクション囲み記号: Haskellでは丸括弧
  2. セクション内無名変数: ハイフンまたはアンダスコア
  3. 無名変数の省略ルール
セクション記法の具体例
  1. セクション囲み記号: 二重引用符
  2. セクション内無名変数: ハイフンまたはアンダスコア
  3. 無名変数の省略ルール: 適宜
セクション記法の例
  1. "¬-" : Pred→Pred
  2. "-_" : RR
  3. "- ? - : -" : Prop×Expr×Expr→Expr 構文論
  4. "- ? - : -" : Pred×Func×Func→Func 意味論
  5. "[-]":RZ
  6. "-2":RR
  7. "-(-)" : Fun×Arg→Val
  8. "<-|->" : V*×V→R
演算子記法の標準化

標準化に必要な情報は

  1. 配置〈レイアウト〉
  2. 配置内での演算子記号の位置(演算子記号なしのケースもある)と形状
  3. 引数位置のシリアライズ方式=順番

例:

  1. "_1 ? _2 : _3"
  2. "_1C_2"
  3. "_2_1"
  4. "_2._1"

左右の並びは左から右が普通だが、引数位置が上下配置のとき、どちらが先かは決めがたい。