異なる引数カウントに対して同じ名前の演算子を定義することは可能ですか?
それが可能であれば、どのように?
たとえば、私が欲しい:
let (-) x y = x - y
let (-) x = -x
悲しいことに、-x だけを呼び出すことはできません。それを使用するには (-)x が必要ですが、これは主な質問とは関係のない別のサブ質問です。
これは let バインディングでは不可能です
MSDNから
F# のスコープ規則では、新しく定義された演算子が組み込み演算子よりも優先されるため、この方法で通常の算術演算子を再定義できます。
static member (+)
ただし、オーバーロードのあるバージョンを使用できます (同じ MSDN ページ) 。
特に、これは機能します:
> type t() =
- static member (+) (a, b) = 1
- static member (+) a = 5;;