XL (プログラミング言語)
演算子は関数宣言のうちのwritten形式を使って定義することができる。以下に整数の足し算を定義するコードを示す。
writtenを使った定義には三つ以上の引数を取ることができる。例として線型変換の行列を示す。
writtenは定数も扱える。これによってより特殊な演算子を定義できる。
基本的な演算子はすべてこのメカニズムで実装される。式はwrittenを用いた関数呼び出しに集約される。よってこのメカニズムは関数オーバーロードというよりも、式削減(expressin reduction)に近い。
関数は多重定義できる。関数は宣言時の引数リストに...を使うことで、可変引数を扱うことができる(当初はothetがこの目的で使われていた)。この際、...を使ってサブルーチンにそのまま引数を渡すことができる。これを可変引数テンプレートと呼ぶ。
このような関数が呼び出されたとき、コンパイラは引数リストに合うように再帰的に関数を作る。