多くのプログラミング言語では、角括弧表記は一般に配列の添字を連想させます。例えば、A[i] はC言語における左辺値で、A によって参照された配列の配列セル i を示しています。ATS では、角括弧表記で複数の関数を呼び出せるようにその複数の関数名で角括弧をオーバーロードすることができます。その結果、添字アクセスのような見た目のコードになります。このスタイルの関数呼び出しは、ときに、ATS で書かれたコードをより読み易いものにするでしょう。
ここで、角括弧オーバーロードの単純な例を見てみましょう。次のコードでは、線形抽象型 lock が2つの関数と共に導入されています:
// absvtype lock(a:vt@ype) // extern fun{a:vt0p} lock_acquire(!lock(a)): a extern fun{a:vt0p} lock_release(!lock(a), a): void //
ここで、次のオーバーロード宣言を導入することを想像してみましょう:
この宣言の後で次のコードを型検査を通ります:// val mylock = $extval(lock(int), "mylock") // val x0 = mylock[] // = lock_acquire (myclok) val () = mylock[] := x0 // = lock_release (myclok, x0) //
ATS では、角括弧表記は既にリストの添字指定、配列の添字指定、行列の添字指定の関数でオーバーロードされています。そしてそれは与えれた参照にアクセス/更新するためにも使われます。
この章で示したコードの全体は オンライン から入手できます。